vue+echarts 实现两个小例子

echarts
来吧,今天写一个关于vue+echarts绘制图表的教程,写的原因很简单, 最近有不少人问,这是其一,其二是我的博客里面没有一片关于echarts的相对比较能看的教程,所以今天就写一篇,我们以折线图和饼图作为例子实现,原因是他们的数据格式相对柱状图来讲比较简单,这个学会了,可以应付绝大多数的图表,当然不包括3D图,虽然echarts支持3D图的绘制,但是这里不涉及,本文主要从几个注意的点说,因为毕竟怎么使用它已经被广大的博友写烂了,这里也就不耽误时间。
引入:

如果你是vue2.0的版本,引入的方式还是一样:
npm install echarts
如果是vue3.0的话,引入方式稍微改变:
npm add echarts
全局引入它:
import echarts from 'echarts
Vue.prototype.$echarts = echarts
按需引入:
let echarts = require("echarts/lib/echarts");
// 引入折线图等组件
require("echarts/lib/chart/line");
require("echarts/lib/chart/bar");
require("echarts/lib/chart/radar");
// 引入提示框和title组件,图例
require("echarts/lib/component/tooltip");
require("echarts/lib/component/title");
require("echarts/lib/component/legend");
上面是如何引入它,不多废话,下面说如何使用它

在这里插入图片描述

 //生成折线图
            drowChart_line() {
                let _this = this;
                let workflow_line = _this.$echarts.init(document.getElementById('workflow_line'), 'light')
                workflow_line.setOption({
                    legend: {
                        data: this.line_desc// 描述信息
                        //格式:["OCMS","UPM"]
                    },
                    xAxis: {
                        type: 'category',
                        data: this.month_line_Lists, // x轴数据
                        //格式:["30","31","32","33","34","35","36","37","38","39"]
                        name: this.line_unit,   // x轴名称单位
                        // x轴名称样式
                        nameTextStyle: {
                            fontWeight: 600,
                            fontSize: 18
                        }
                    },
                    yAxis: {
                        type: 'value',
                        // y轴名称样式
                        nameTextStyle: {
                            fontWeight: 600,
                            fontSize: 18
                        }
                    },
                    tooltip: {
                        trigger: 'axis'   // axis   item   none三个值
                        confine: true, 
                    },
                    series: this.series_line_Lists
                    
                },true) //这里的true一定要有,不然的话会导致你的图表不根据数据的变化进行更新
            },
  • 这里的this.series_line_Lists格式为:
[{"name":"OCMS","data":[0,2,0,1,2,0,0,0,0,0],"type":"line"},{"name":"UPM","data":[0,0,0,1,0,0,0,0,0,0],"type":"line"}]}}
注意的点:
  • 末尾的true

这里的true如果不加的话,会导致vue的数据更新了,视图层面的数据也更新了,但是折线图却没有任何更新

  • 函数执行结束绘制图表

echarts使用的是canvas绘制,如果你说的数据是在图出现以后返回的,会导致绘制失败,如果你的数据是在data里面定义的,那么你需要保证数据加载结束进行绘制图表,所以你的绘制函数需要在mounted里执行,这样就保证了数据加载结束进行绘制图表了。

  • confine

这个属性是说我们的提示浮层不会超出div的限制,会一直随着鼠标移动达到跟随的一个效果,这也是网上最头疼的一个事情

  • legend

这个属性是类型图例或者备注的一个东西,一般的话,默认的配置就是可以的的,但是如果你的数据项比较多的时候,配置一下type: ‘scroll’,就需要分页展示了,例如下图:
在这里插入图片描述
在这里插入图片描述

饼图
drowChart_pie() {
                let _this = this;
                // 基于准备好的dom,初始化echarts实例
                let workflow_pie = this.$echarts.init(document.getElementById('workflow_pie'), 'light')
                this.loading = false
                workflow_pie.setOption({
                    tooltip: {
                        trigger: 'item',
                        formatter: '{a} <br/>{b} : {c} ({d}%)'
                    },
                    legend: {
                        type: 'scroll',
                        orient: 'vertical',
                        left: 'left',
                        data: this.desc_data
                        //['p1','p2','p3','p4']
                    },
                    series: [
                        {
                            name: '来源',
                            type: 'pie',
                            radius: '70%',
                            center: ['50%', '60%'],
                            data: this.series_data,
                            //[{name:'p1',value:2},{name:'p2',value:4},{name:'p3',value:2},{name:'p4',value:3},]
                            itemStyle: {
                                emphasis: {
                                    shadowBlur: 10,
                                    shadowOffsetX: 0,
                                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                                },
                                normal: {
                                    label: {
                                        show: true,
                                        //position: 'inner', //在内部显示
                                        //formatter: '{b} : {c} ({d}%)'
                                        formatter: '{b} : {c} ({d}%)' //只显示百分比
                                    },
                                    labelLine: {show: true}, //是否显示连接线
                                }
                            },
                            emphasis: {
                                itemStyle: {
                                    shadowBlur: 10,
                                    shadowOffsetX: 0,
                                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                                }
                            }
                        },
                    ],

                })
            }

这里的两个demo只是想介绍一下echarts怎么使用,别的一些图表也都只是一些data格式不同,刚好这两个demo是我使用的,所以借此机会记录一下,中间的一些坑也可以帮助一些和我一样对这个不熟悉这个的小伙伴当作一个参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是悟能了

阅读就是对我最大的支持,感谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值