Vue2 使用 Echarts 创建图表实例代码


Posted in Javascript onMay 18, 2017

在后台管理系统中,图表是一个很普遍的元素。目前常用的图标插件有 charts,  Echarts, highcharts。这次将介绍 Echarts 在 Vue 项目中的应用。

一、安装插件

使用 cnpm 安装 Echarts

cnpm install echarts -S

和之前介绍的 axios 类似,echarts 也不能通过 Vue.use() 进行全局调用

通常是在需要使用图表的 .vue 文件中直接引入

import echarts from 'echarts'

也可以在 main.js 中引入,然后修改原型链

Vue.prototype.$echarts = echarts

然后就可以全局使用了

let myChart = this.$echarts.init(document.getElementById('myChart'))

二、创建图表

首先需要在 HTML 中创建图表的容器

需要注意的是,图表的容器必须指定宽高,也就是说 width,height 不能使用百分比,只能用 px

这样确实不够灵活,不过我们可以用 js 来改变 width 和 height,使图表容器能够自适应,具体的实现请往后看

然后在 mounted 中创建图表,具体的配置参考官方文档,这里不再赘述

 三、按需引入

上面引入的 echarts 包含了所有图表,但有时候我们只需要一两个基本图表,这时候完整的 echarts 就显得累赘

假如只需要创建一个饼图,那么可以这么做:

// 引入基本模板
 let echarts = require('echarts/lib/echarts')
 // 引入饼图组件
 require('echarts/lib/chart/pie')
 // 引入提示框和图例组件
 require('echarts/lib/component/tooltip')
 require('echarts/lib/component/legend')

之所以使用 require 而不是 import,是因为 require 可以直接从 node_modules 中查找,而 import 必须把路径写全

可以按需引入的模块列表见 https://github.com/ecomfe/echarts/blob/master/index.js

 四、适应容器

上面说过,图表的容器必须固定宽高,这确实是一个比较反人类的设定

为了解决这个问题,需要给图表容器外面再加一个容器,而这个外容器的宽高可以适应页面。上面的 <div class="charts"> 就是这样的外容器

let chartBox = document.getElementsByClassName('charts')[0]
let myChart = document.getElementById('myChart')

// 用于使chart自适应高度和宽度,通过窗体高宽计算容器高宽
function resizeCharts () {
 myChart.style.width = chartBox.style.width + 'px'
 myChart.style.height = chartBox.style.height + 'px'
}
// 设置容器高宽
resizeCharts()
   
let mainChart = echarts.init(myChart)
mainChart.setOption(options)

当页面加载的时候,将外容器的宽高,赋给图表容器

但这只是解决了页面加载时的自适应问题

如果在页面加载之后,仍需要图表自适应宽高,就需要用到 echarts 的媒体查询

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
关于javascript function对象那些迷惑分析
Oct 24 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
Jan 14 Javascript
js 针对html DOM元素操作等经验累积
Mar 11 Javascript
bootstrap改变按钮加载状态
Dec 01 Javascript
JS使用正则表达式除去字符串中重复字符的方法
Nov 05 Javascript
jQuery简单实现列表隐藏和显示效果示例
Sep 12 Javascript
Javascript中return的使用与闭包详解
Jan 11 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
Apr 27 Javascript
jQuery.form.js的使用详解
Jun 14 jQuery
取消Bootstrap的dropdown-menu点击默认关闭事件方法
Aug 10 Javascript
每天学点Vue源码之vm.$mount挂载函数
Mar 11 Javascript
JS实现网页端猜数字小游戏
Mar 06 Javascript
AngularJS折叠菜单实现方法示例
May 18 #Javascript
jQuery Validate 校验多个相同name的方法
May 18 #jQuery
easyUI下拉列表点击事件使用方法
May 18 #Javascript
AngularJS自定义指令之复制指令实现方法
May 18 #Javascript
AngularJS使用ng-class动态增减class样式的方法示例
May 18 #Javascript
Vue中img的src属性绑定与static文件夹实例
May 18 #Javascript
JS验证全角与半角及相互转化的介绍
May 18 #Javascript
You might like
apache rewrite_module模块使用教程
2008/01/10 PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
2011/07/04 PHP
php采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
javascript正则表达式中参数g(全局)的作用
2010/11/11 Javascript
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
2013/10/24 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
详解Python如何获取列表(List)的中位数
2016/08/12 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
Python使用分布式锁的代码演示示例
2018/07/30 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
高中毕业生自我鉴定
2013/11/03 职场文书
毕业生自我鉴定范文
2013/11/08 职场文书
饮料业务员岗位职责
2013/12/15 职场文书
校园之声广播稿
2014/01/31 职场文书
安全教育月活动总结
2014/05/05 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
家长给老师的感谢信
2015/01/20 职场文书