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 关于# 和 void的区别分析
Oct 26 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
Nov 03 Javascript
基于JavaScript实现div层跟随滚动条滑动
Jan 12 Javascript
利用fecha进行JS日期处理
Nov 21 Javascript
JSONP跨域请求
Mar 02 Javascript
Bootstrap媒体对象学习使用
Mar 07 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
Jul 26 Javascript
详解vue-router 初始化时做了什么
Jun 11 Javascript
vueScroll实现移动端下拉刷新、上拉加载
Mar 22 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
Sep 26 Javascript
webpack5 联邦模块介绍详解
Jul 08 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
Jul 31 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
PHP5.2下chunk_split()函数整数溢出漏洞 分析
2007/06/06 PHP
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
php ajax 静态分页过程形式
2011/09/02 PHP
php全排列递归算法代码
2012/10/09 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
js中匿名函数的N种写法
2010/09/08 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
js动态拼接正则表达式的两种方法
2014/03/04 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
2015/10/08 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
python matplotlib中文显示参数设置解析
2017/12/15 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
python 写函数在一定条件下需要调用自身时的写法说明
2020/06/01 Python
python初步实现word2vec操作
2020/06/09 Python
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
导购员的岗位职责
2014/02/08 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
2015年女生节活动总结
2015/02/27 职场文书
2015年推普周活动总结
2015/03/27 职场文书
幼儿园亲子活动通知
2015/04/24 职场文书
MySQL单表千万级数据处理的思路分享
2021/06/05 MySQL
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript