vue项目中使用 echarts 统计图

1.安装echarts依赖

$ npm install echarts -s

2.main.js全局引入

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

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

<div ref="chartbox"></div>

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();
      });
    },
  }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值