博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue怎么使用Echarts创建图表
阅读量:5366 次
发布时间:2019-06-15

本文共 5157 字,大约阅读时间需要 17 分钟。

摘要:在后台管理系统中,我们经常会遇到图表,比如说:柱形图,饼状图,折线图,雷达图等等,而用来写图表插件有很多,我这里主要介绍Echarts在项目里怎么使用,官网地址如下:,详细信息请阅览他们的官网文档和实例,各种图表都比较完善。

 

本文流程:

1.安装插件→2.引入Echarts→3.创建图表→4.修改样式→5.接入数据

 

一.安装插件

方法一:npm安装Echarts

npm install echarts -S

方法二:cnpm安装Echarts

1.首先我们需要安装cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

2.然后

cnpm install echarts -S

 

二.引入Echarts

方法一:全局引入

打开main.js文件引入Echarts

import echarts from 'echarts'

然后将echart添加到vue的原型上,这样就可以全局使用了

Vue.prototype.$echarts = echarts

方法二:局部引入

全局引入会将所有的echarts图表打包,导致体积过大,所以我觉得最好还是按需要来局部引入,比如我们需要引入一个柱状图

// 引入基本模板let echarts = require('echarts/lib/echarts')// 引入柱状图组件require('echarts/lib/chart/bar')// 引入提示框和title组件require('echarts/lib/component/tooltip')require('echarts/lib/component/title')

这里require直接从 node_modules 中查找文件位置进行引入

 

三.创建图表

当你安装完插件和在页面里面引入图表之后,那么恭喜你可以创建图表了~

第一步:你首先得创造一个图表的容器,宽高必须是行内样式,单位必须是px

注意:这样会出现一个问题,因为由于必须固定好宽高,你缩小屏幕的时候,图表不会随之适应的缩小,刷新页面才能适应,解决方法的实现请接着往下看

第二步:绘制图表,这里我们要注意,echarts初始化应在钩子函数mounted()中,挂载之后调用

解释

第一点:省略处为绘制图表的代码,首先,你打开Echarts官网,找到实例,选取你项目里面需要用到的图表模板(样式差不多就行,下文会教你如何修改图表样式),点进去,然后你可以看到左侧的代码,把option = {}括号里面的内容放置到我上方省略的代码处,运行,你页面即可以看到你所需要的图表;

第二点:下方代码防止越界,重汇canvas处,即为可以解决掉屏幕缩小,图表不会随之适应的缩小的方法,原理为当浏览器发生resize事件的时候,让其触发echart的resize事件,重绘canvas

//防止越界,重绘canvaswindow.onresize = myChart.resize;myChart.setOption(option);//设置option

 

四.修改样式    

当你创建完图表之后,你会发现你的图表和UI给的样式差距太大,这样写肯定是不能过关的,所以你得修改图表样式,现在我从图表的左上角说到右下角,如何去更改图表样式,首先先上两张图表的差异图:

图一为Echarts未修改过的柱形图:

 

图二为修改样式之后的柱形图:

 

样式修改方法:

1.左上角图例处:

//图例legend: {      data: ['降水量'],//与series的name对应       left: '75%',//图例的离左边位置,可以用像素,可以用百分比,也可以用center,right等       top: 12px,//图例离顶部的位置       itemWidth: 10,//图例图标的宽       itemHeight: 10,//图例图标的高       textStyle: {             color: '#878787',//文字的具体的颜色        }},

2.右上角切换图形处:

toolbox: {       show : true,//显示       feature : {              magicType : {show: true, type: ['line', 'bar']},       },//柱形图和折线图切换       right: '6%',//离右边的距离},

3.中部图表X轴修改:

//x轴xAxis: {        type: 'category',        data: ['1月', '2月', '3月', '4月', '5月'],//x轴的数据        splitLine: {show: false},//去除网格分割线        // splitArea: {show: true},//保留网格区域        axisLine: {
//坐标线 lineStyle: { type: 'solid', color: '#d8d8d8',//轴线的颜色 width:'1'//坐标线的宽度 } }, axisTick: {
//刻度 show: false//不显示刻度线 }, axisLabel: { textStyle: { color: '#878787',//坐标值的具体的颜色 } }, splitLine: { show: false//去掉分割线 }, },

4.中部图表Y轴修改:

yAxis: {      name: '单位:次',//轴的名字,默认位置在y轴上方显示,也可不写      max: 30,//最大刻度      type: 'value',      axisLine: {
//线 show: false }, axisTick: {
//刻度 show: false }, axisLabel: { textStyle: { color: '#878787',//坐标值得具体的颜色 } }, minInterval: 5,//标值的最小间隔 splitLine: { lineStyle: { color: ['#f6f6f6'],//分割线的颜色 } }},

5.柱状图形修改:

series: [{       name: '数量',//每组数据的名字,与图例对应       data: [200, 300, 400, 350, 100],//数据       type: 'bar',//柱状图       itemStyle: {            normal: {                 color: '#FD6B71',//设置柱子颜色                 abel: {                        show: true,//柱子上显示值                        position: 'top',//值在柱子上方显示                         textStyle: {                                color: '#FD6B71'//值得颜色                         }                  }             }        },        barWidth: 15//设置柱子宽度,单位为px }],

 好吧!整体代码我也发一份,当你安装好插件和全局引入后,你可以用以下代码进行测试有没有成功,代码如下:

 

 

 

五.接入数据

就比如上方柱形图,数据为data: [200, 300, 400, 350, 100],我们通过调用接口,把接口数据替换掉之前写死的数据即可,比如:

axios({       method:'POST',       url:this.API.drawline,}).then(response => {       //获取数据       this.draw= response.data;       //把原先写死的数据替换为接口数据即可       //......           }).catch(err => {       console.log(err);})

 然后,后台返回的参数也许是上面那个格式的,我们直接替换就好,但也可能返回这种格式

[     {         num: 16,          money: 500,          day: "2019-03-15"      },      {         num: 17,          money: 540,          day: "2019-03-16"      },]

这样我们就需要把参数取出放到一个新数组里面,再进行调用;

var newArrayday  = [];//日期新数组var newArraynum  = [];//订单数量新数组var newArraymoney  = [];//我的业绩新数组var j1 = 0;var j2 = 0;var j3 = 0;for(let i in this.draw){    newArrayday[j1++] = this.draw[i].day    newArraynum[j2++] = this.draw[i].num    newArraymoney[j3++] = this.draw[i].money}console.log(newArrayday)console.log(newArraynum)console.log(newArraymoney) this.daylist=newArrayday;//定义 ...

然后我们需要把之前图表方法里面的死数据替换成接口数据,这里需要注意,我们调用之后发现我们取到的数据为空,是因为我们图表调用方法写在了mounted里面了,我们需要把方法移至到接口成功方法里面:

axios({       method:'POST',       url:this.API.drawline,}).then(response => {       //成功调用图表方法       this.drawLine();        }).catch(err => {       console.log(err);})

 

 

总结:希望对大家有所帮助,觉得好的可以点个关注,以后方便再来预览,也可以对我其他博客进行评价,一起学习,一起成长,有什么问题欢迎留言,我将第一时间更改,也谢谢大家能阅读到这里,你们的支持是我前进的动力!

 

转载于:https://www.cnblogs.com/hejun26/p/10456774.html

你可能感兴趣的文章
占小狼的简书博客
查看>>
struts2__action执行顺序
查看>>
php异常处理
查看>>
[xampp] /usr/bin/env: php: No such file or directory
查看>>
细学PHP 10 贴吧-2
查看>>
黑客攻防入门秘籍
查看>>
Swift迎来了1.0 GM 版(2014.09.09)
查看>>
【iOS开发-68】APP下载案例:利用tableView自带的cell布局+缓存池cell复用时注意button状态的检查...
查看>>
《Genesis-3D开源游戏引擎-FQA常见问题解答》2014年01月10号版本
查看>>
Java 编程下实现随机无重复数字功能
查看>>
Android 编程下的代码混淆
查看>>
animation属性
查看>>
页内的模块和组件抽象规划经验
查看>>
安全-分析深圳电信的新型HTTP劫持方式
查看>>
将Centos的yum源更换为国内的阿里云源
查看>>
git diff 的用法
查看>>
一段sql的优化
查看>>
十进制与十六进制的相互转换
查看>>
在Flex中用Validator检测数字、字符串、Email.
查看>>
[leetcode]4Sum
查看>>