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 相关文章推荐
jQuery实现点击按钮弹出可关闭层的浮动层插件
Sep 19 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
Dec 12 Javascript
jQuery实现简洁的轮播图效果实例
Sep 07 Javascript
将JSON字符串转换成Map对象的方法
Nov 30 Javascript
javascript中this关键字详解
Dec 12 Javascript
EasyUI在Panel上动态添加LinkButton按钮
Aug 11 Javascript
基于vue组件实现猜数字游戏
May 28 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
Jul 07 Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
Jul 26 Javascript
javascript中关于类型判断的一些疑惑小结
Oct 14 Javascript
解决Vue @submit 提交后不刷新页面问题
Jul 18 Javascript
vue中touch和click共存的解决方式
Jul 28 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
使用PHP和XSL stylesheets转换XML文档
2006/10/09 PHP
输出控制类
2006/10/09 PHP
PHP入门学习笔记之一
2010/10/12 PHP
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
一个简单的网页密码登陆php代码
2012/07/17 PHP
JavaScript 图片预览效果 推荐
2009/12/22 Javascript
使用jquery为table动态添加行的实现代码
2011/03/30 Javascript
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
js下拉菜单生成器dropMenu使用方法详解
2017/08/01 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
微信小程序上传图片到php服务器的方法
2019/05/23 Javascript
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
python人人网登录应用实例
2014/09/26 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
Python3计算三角形的面积代码
2017/12/18 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
python 实现矩阵填充0的例子
2019/11/29 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
AJAX的优缺点都有什么
2015/08/18 面试题
获奖的大学生创业计划书
2014/01/05 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
2015新学期开学寄语
2015/02/26 职场文书
2015年党员个人自我评价
2015/03/03 职场文书
干部理论学习心得体会
2016/01/21 职场文书
Golang中异常处理机制详解
2021/06/08 Golang