推荐使用ECharts,vue-ECharts更新缓慢不推荐
安装好vue-cli后,cd 到项目目录下,npm 安装ECharts
npm install echarts --save
方式一
在 src >> assets 下新建名为 js 的文件夹,并在该文件夹下创建 myCharts.js 文件
这个文件用来写所有的 ECharts 图表方法都封装在这里
```
import echarts from 'echarts'
let install = function(Vue) {
Object.defineProperties(Vue.prototype, {
$chart: {
get() {
return {
//一个简单的示例
first_bar: function (id) {
this.chart = echarts.init(document.getElementById(id));
this.chart.clear();
const optionData = {
title: {
text: 'ECharts 入门示例'
},
tooltip: {},
xAxis: {
data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
};
this.chart.setOption(optionData);
},
}
}
}
})
}
export default {
install
}
```
在 main.js 文件内引入刚刚所创建的文件
import myCharts from '@/assets/js/myCharts' //引入eCharts 文件
Vue.use(myCharts)
在需要引入ECharts图表的插件页,调用已封装的方法,在页面上画出图表
```
<template>
<div id="chart"></div>
</template>
<script>
export default {
name: 'Home',
mounted() {
this.$chart.first_bar('chart'); //方法调用
}
}
</script>
<style scoped>
#chart {
width: 300px;
height: 300px;
}
</style>
```
-----------------------------
方式二
不同于方式一,这种方式不需要新建单独文件,也不需要在main.js中引入,只需要在需要编辑图表的组件中,如下:
```
import echarts from 'echarts' //引入echarts
export default {
name: 'comRadar', //组件名
data(){ //子组件中定义data,必须是一个方法,并返回实例值,data:function(){return{}}
return {
myChart: {},
}
},
methods:{//方法
Init:function() { //父级div大小改变,图表跟着变化,也可以写成 Init(){}
window.addEventListener('resize', function() {
this.myChart.resize()
}.bind(this))
}
},
mounted() {//生命周期钩子
this.myChart = echarts.init(document.getElementById("radar_case"));
let optionData = {
//图表数据(略)
};
this.myChart.setOption(optionData)
this.Init() //方法调用
},
}
```
这样就可以了,同时这种方式,图表大小可以根据窗口改变大小。
页面数据改变地图显示移位
有时候经常遇到,地图引入,在第一页的时候将地图大小改变,当地图数据切换时,新的地图位置移位,这是因为只是改变了地图数据,地图并没有重新生成。
解决办法:
//在setOption()方法中添加true,表示重新绘制。
this.chart.setOption(this.setOption(),true)
方法三
```
<div id="qinshigaikuang"></div>
<div id="chart">
<script>
// 引入基本模板
const echarts = require('echarts/lib/echarts')
// 引入柱状图组件
require('echarts/lib/chart/bar')
require('echarts/lib/chart/pie')
// 引入提示框和title组件
require('echarts/lib/component/tooltip')
require('echarts/lib/component/title')
export default {
name: 'Home',
data () {
return {
msg: 'Welcome to Your Vue.js App',
i: 1
}
},
mounted () {
this.timer()
// this.qinshigaikuang()
// this.drawLine()
},
methods: {
// 这是一个定时器
timer () {
return setInterval(() => {
var i = this.i++
this.qinshigaikuang(i)
this.drawLine()
console.log(1)
}, 30)
},
qinshigaikuang (i) {
// 基于准备好的dom,初始化echarts实例
const myChart = echarts.init(document.getElementById('qinshigaikuang'))
// 绘制图表
myChart.setOption({
title: {
text: '寝室概况',
subtext: '沈阳农业大学',
left: 'center'
},
legend: {
left: 'center',
top: 'bottom',
data: ['男生', '女生', '已入住', '未入住', '使用中', '未使用']
},
color: ['#6dd8da', '#b6a2de', '#009773', '#58afed', 'red', '#009773'],
toolbox: {
show: true, // true false
feature: {
magicType: {
show: true,
type: ['pie', 'funnel']
}
}
},
series: [
{
name: '男女生比例',
type: 'pie',
radius: [30, 80],
center: ['15%', '55%'],
roseType: 'nanvn',
data: [
{ value: i, name: '男生' + i + '人' }, // 6948
{ value: 9408, name: '女生9408人' }
],
animationEasing: 'cubicInOut'// 开启动画
},
{
name: '入住比例',
type: 'pie',
radius: [30, 80],
center: ['50%', '55%'],
roseType: 'ruzhu',
data: [
{ value: 3886, name: '已入住3886人' },
{ value: 160, name: '未入住160人' }
]
},
{
name: '床位信息',
type: 'pie',
radius: [30, 80],
center: ['80%', '60%'],
roseType: 'chuangwei',
data: [
{ value: 16428, name: '使用中16428床位' },
{ value: 1163, name: '未使用1163床位' }
]
}
]
})
},
drawLine () {
// 基于准备好的dom,初始化echarts实例
const myChart = echarts.init(document.getElementById('chart'))
// 绘制图表
myChart.setOption({
title: { text: 'ECharts 入门示例' },
tooltip: {},
xAxis: {
data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
})
}
}
}
</script>
```
- HTML
- 讯飞插件
- Python
- 王者荣耀
- demo_cg.py
- demo_cg_TT.py
- img.py
- MySQL
- 清空表数据
- ID自增长重置
- 用户密码及权限操作
- 外键在数据库中的作用
- MySQL增删改查语句
- DDL-数据库操作
- DDL-表操作-查询
- DDL-表操作-创建
- DDL-表操作-数据类型
- DDL-表操作-修改
- DDL-表操作-删除
- DML-语句
- DML-添加数据
- DML-修改数据
- DML-删除数据
- DQL-语法
- DQL-基本查询
- DQL-条件查询
- DQL-聚合函数
- DQL-分组查询
- DQL-排序查询
- DQL-分页查询
- DCL-介绍
- DCL-管理用户
- DCL-权限控制
- 函数
- JS
- ajax
- ajax get请求
- ajax post提交
- ajax 同时上传文本和文件到数据库(inpt text和input file)
- 路径传值+接收解析
- js 本地sessionStorage
- js Excel导出.xls
- 二维码生成插件
- VUE-CLI4
- 安装手脚架及插件
- ECharts-数据可视化
- element-ui-时间戳
- qrcode二维码生成插件
- vuedraggable-拖拽组件
- vue-drag-resize-自由拖拽、缩放组件
- gitee配置
- src
- plugins
- element.js
- echartsMixin.js
- views
- login
- login.vue
- btn.vue
- home
- home.vue
- Welcome.vue
- user
- users.vue
- router
- main.js
- App.vue
- 引入语法
- 获取路径传值
- ajax请求
- token语法
- NPM更换镜像方案
- PHP
- PHP 微信网页登录
- PHP 判断函数
- PHP 获取微信公众号openid
- PHP 实现发送模板消息(微信公众号版)
- PHP 阳历阴历转换计算生肖闰年
- PHP 接口数组形式
- PHP 同文件夹下顺序命名
- PHP 输出文件
- PHP E-mail发送
- PHP cURL资源
- PHP 远程访问控制服务器
- PHP 8.0 开启mysqli扩展
- PHP 使用 OSS 批量上传图片
- PHP md5 加密与解密
- ThinkPHP
- PT6
- TP6安装多应用
- TP5
- view渲染模板常见语法
- Visual Studio Code
- 介绍
- 插件-eslint
- vs code插件
- VSCode添加自定义模板
- SFTP
- md格式的文档
- mermaid
- frp内网穿透
- 自定义端口
- ui-china.cn
- 常用软件
- 框架
- 服务器
- 微信小程序
- 云函数 Email
- 参数传递
- 其他
- VMware虚拟机centos7设置静态ip 连接外网