vue项目中使用 echarts 统计图

1.安装echarts依赖

$ npm install echarts -s

2.main.js全局引入

// 引入echarts
import echarts from 'echarts'
Vue.prototype.$echarts = echarts

3.创建一个存放图表的容器

4.绘制图表

export default {
  data () {
    return {}
  },
  mounted(){
    this.drawLine();
  },
  methods: {
    drawLine(){
      //1.设置参数对象
      var option = {
            title:{
                text:'ECharts 数据统计'
            },
            tooltip:{},
            legend:{
                data:["A类", "B类"]
            },
            xAxis:{
                data:["衣服","裤子","袜子","鞋子"]
            },
            yAxis:{},
            series:[{
                name:'销量',
                type:'bar',	//bar柱状图,line折线图
                data:[500,200,360,100]
            }]
        };
      //2.初始化echarts实例
      var myChart = this.$echarts.init(this.$refs.chartbox);
      //3.挂载指定图表对象
      myChart.setOption(option);
      //4.窗口大小改变立马重新渲染自适应
      window.addEventListener("resize", function() {
        myChart.resize();
      });
    },
  }
}

附1:解决在elementui布局中使用echarts统计图不显示的问题

因为elementui中dialog组件是懒渲染的,需要在open事件里面初始化echarts

  • 1.在dialog中使用open方法
<el-col :span="24" :offset="0" :xs="{span:24,offset:0}" @open="open()">
    <div ref="chartbox">div>
el-col>
  • 2.在定时函数setTimeout中执行方法
methods: {
    open() {
      const t = this;
      setTimeout(() => {
        t.drawLine();	// 执行echarts画图方法
      }, 0);
    },
}

附2:按需引入

全局引入会将所有的echarts图表打包,导致体积过大,可以采用按需引入减小项目体积。
子组件:

// 引入基本模板
let echarts = require('echarts/lib/echarts')
// 引入柱状图组件
require('echarts/lib/chart/bar')
// 引入提示框和title组件
require('echarts/lib/component/tooltip')
require('echarts/lib/component/title')
export default {
  data () {
    return {}
  },
  mounted(){
    this.drawLine();
  },
  methods: {
    drawLine(){
      //1.设置参数对象
      var option = {
            title:{
                text:'ECharts 数据统计'
            },
            tooltip:{},
            legend:{
                data:["A类", "B类"]
            },
            xAxis:{
                data:["衣服","裤子","袜子","鞋子"]
            },
            yAxis:{},
            series:[{
                name:'销量',
                type:'bar',	//bar柱状图,line折线图
                data:[500,200,360,100]
            }]
        };
      //2.初始化echarts实例,子组件按需引入不用this.$echarts,直接echarts调用
      var myChart = echarts.init(this.$refs.chartbox);
      //3.挂载指定图表对象
      myChart.setOption(option);
      //4.窗口大小改变立马重新渲染自适应
      window.addEventListener("resize", function() {
        myChart.resize();
      });
    },
  }
}

你可能感兴趣的:(Vue)