vue中使用echarts组件(基本配置、柱状图、饼图、自定义圆环图并显示数据在图例legend旁)

  1. 安装echarts
npm install echarts -S

安装完成之后,就可以直接使用了
注意:
如果在安装echarts之后,在main.js进行了全局引入:

import echarts from 'echarts'
Vue.prototype.$echarts = echarts

再到Chart.vue中使用:

myChart = this.$echarts.init(this.$refs.myChart)

此时,运行后可能会报错:

Uncaught TypeError: Cannot read property 'init' of undefined

解决方法就是在使用之前引入echarts即可:

var echarts = require("echarts"); //引入echarts
let myChart = echarts.init(this.$refs.myChart);
  1. 使用echarts:创建一个vue文件,如Chart.vue,在该文件中绘制图表
<template>
  <div>
    <div ref="myChart" style="width:100%;height:300px"></div>
    <div ref="myChart2" style="width:100%;height:300px"></div>
    <div ref="myChart3" style="width:100%;height:300px"></div>
  </div>
</template>

<script>
export default {
  name: "Chart",
  methods: {
    drawChart() {
      var echarts = require("echarts"); //引入echarts
      // 基于准备好的dom,初始化echarts实例
      let myChart = echarts.init(this.$refs.myChart);
      let myChart2 = echarts.init(this.$refs.myChart2);
      let myChart3 = echarts.init(this.$refs.myChart3);
      //图表内容
      let option = {
        //为图表配置标题
        title: {
          text: "柱状/条形图",
        },
        //配置提示信息
        tooltip: {}, //有这句话,鼠标放上去会提示相应数据
        //配置要在 X 轴显示的项
        xAxis: {
          data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"],
        },
        //配置要在 Y 轴显示的项
        yAxis: {},
        //系列列表:每个系列通过 type 决定自己的图表类型
        series: [
          {
            name: "销量", //系列名称
            type: "bar", //系列图表类型 bar:柱状/条形图
            data: [5, 20, 36, 10, 10, 20], //系列中的数据内容
          },
        ],
      };
      let option2 = {
        title: {
          text: "系统饼图 -> 南丁格尔图",
        },
        tooltip: {},
        //图例组件:展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。
        legend: {
          orient: "vertical",
          x: "left", //可设定图例在左、右、居中
          y: "top", //可设定图例在上、下、居中
          padding: [0, 0, 0, 400], //可设定图例[距上方距离,距右方距离,距下方距离,距左方距离]
          data: ["视频广告", "联盟广告", "邮件营销", "直接访问", "搜索引擎"],
        },
        series: [
          {
            name: "访问来源",
            type: "pie", // 设置图表类型为饼图
            radius: "55%", // 饼图的半径,外半径为可视区尺寸(容器高宽中较小一项)的 55% 长度。
            roseType: "angle", //也可以通过设置参数把饼图显示成南丁格尔图。
            data: [
              // 数据数组,name 为数据项名称,value 为数据项值
              { value: 235, name: "视频广告" },
              { value: 274, name: "联盟广告" },
              { value: 310, name: "邮件营销" },
              { value: 335, name: "直接访问" },
              { value: 400, name: "搜索引擎" },
            ],
          },
        ],
      };
      let option3 = {
        title: {
          text: "自定义圆环图",
        },
        color: ["#CBFEF8", "#FDFDE3", "#F3E5FE", "#A6FFE5", "#FAE5EC"],
        tooltip: {},
        legend: {
          x: "46%",
          y: "28%",
          orient: "vertical",
          data: ["aa", "bb", "cc", "dd", "ee"],
          formatter: function(name) {
            var index = 0;
            var clientlabels = ["aa", "bb", "cc", "dd", "ee"];
            var clientcounts = [800, 300, 200, 500, 400];
            clientlabels.forEach(function(value, i) {
              if (value == name) {
                index = i;
              }
            });
            return name + "  " + clientcounts[index];
          },
        },

        calculable: false,
        series: [
          {
            name: "myCharts",
            type: "pie",
            //radius: "50%", // 设置为圆饼
            radius: ["30%", "60%"], // 设置环形饼状图, 第一个百分数设置内圈大小,第二个百分数设置外圈大小
            center: ["25%", "47%"], // 设置饼状图位置,第一个百分数调水平位置,第二个百分数调垂直位置

            startAngle: 90, //开始旋转的角度

            itemStyle: {
              normal: {
                label: {
                  show: false,
                  position: "inner",
                },
                labelLine: {
                  show: false,
                },
              },
            },
            /*
             itemStyle: {
              normal: {
                label: {
                  show: true,
                  position: "outer",
                },
                labelLine: {
                  show: true,
                },
              },
            },
            */
            data: [
              { value: 800, name: "aa" },
              { value: 300, name: "bb" },
              { value: 200, name: "cc" },
              { value: 500, name: "dd" },
              { value: 400, name: "ee" },
            ],
          },
        ],
      };
      // 绘制图表
      myChart.setOption(option);
      myChart2.setOption(option2);
      myChart3.setOption(option3);
    },
  },
  mounted() {
    //在mounted中调用,确保myChart需要展示的标签渲染出来
    this.$nextTick(() => {
      setTimeout(() => {
        this.drawChart();
      });
    });
  },
};
</script>

<style scoped></style>

  1. 效果图展示:
    在这里插入图片描述
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue使用Echarts实现柱状图动态数据,可以按照以下步骤进行: 1. 安装echartsvue-echarts ```bash npm install echarts --save npm install vue-echarts --save ``` 2. 在Vue组件引入Echartsvue-echarts ```javascript import ECharts from 'vue-echarts/components/ECharts.vue' import 'echarts/lib/chart/bar' import 'echarts/lib/component/tooltip' ``` 3. 在Vue组件定义数据配置项 ```javascript data () { return { chartData: { xData: [], yData: [] } } }, computed: { chartOptions () { return { tooltip: {}, xAxis: { data: this.chartData.xData }, yAxis: {}, series: [{ name: '销量', type: 'bar', data: this.chartData.yData }] } } } ``` 4. 在Vue组件定义方法来更新数据 ```javascript methods: { updateChartData () { // 获取新数据 const newData = ... // 更新chartData this.chartData.xData = newData.xData this.chartData.yData = newData.yData } } ``` 5. 在Vue组件使用ECharts组件并传入配置项和数据 ```html <template> <div> <e-charts :options="chartOptions" :data="chartData"></e-charts> </div> </template> <script> import ECharts from 'vue-echarts/components/ECharts.vue' import 'echarts/lib/chart/bar' import 'echarts/lib/component/tooltip' export default { components: { ECharts }, data () { return { chartData: { xData: [], yData: [] } } }, computed: { chartOptions () { return { tooltip: {}, xAxis: { data: this.chartData.xData }, yAxis: {}, series: [{ name: '销量', type: 'bar', data: this.chartData.yData }] } } }, methods: { updateChartData () { // 获取新数据 const newData = ... // 更新chartData this.chartData.xData = newData.xData this.chartData.yData = newData.yData } } } </script> ``` 6. 在需要更新数据的时候调用方法 ```html <template> <div> <e-charts :options="chartOptions" :data="chartData"></e-charts> <button @click="updateChartData">更新数据</button> </div> </template> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值