项目场景:
在vue中使用Echarts可视化图表,官方网址如下
安装和使用:
①从npm获取
npm install echarts --save
② 新建echarts.js
注意:echarts.js的路径根据自己习惯存放
(优点:节省项目内存,缺点:比较麻烦,要对各个组件很熟悉)
//按需引入echarts,在echarts.js里
import * as echarts from 'echarts'
// 引入柱状图图表和折线图表、饼图表、散点图,图表后缀都为 Chart
import { BarChart , LineChart, PieChart, ScatterChart} from 'echarts/charts';
// 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component
import {
TitleComponent,
TooltipComponent,
GridComponent,
DatasetComponent,
TransformComponent
} from 'echarts/components';
// 标签自动布局,全局过渡动画等特性
import { LabelLayout, UniversalTransition } from 'echarts/features';
// 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
import { CanvasRenderer } from 'echarts/renderers';
// 注册必须的组件
echarts.use([
TitleComponent,
TooltipComponent,
GridComponent,
DatasetComponent,
TransformComponent,
BarChart,
LineChart,
PieChart,
ScatterChart,
LabelLayout,
UniversalTransition,
CanvasRenderer
]);
// 导出
export default echarts
echarts.js【全局引入】:
1)在main.js中引入就是节省性能版的全局引入
// main.js
import echarts from './js/echarts'
Vue.prototype.$echarts = echarts //原型链挂载到全局
2)单页面文件完整代码
一定要给容器设置高度!不然图表出不来!
<template>
<div id="chart" style="height: 400px" ref="chart"></div>
</template>
<script>
export default {
data() {
chart: null // echarts图表实例
},
methods: {
initChart () {
this.chart = this.$echarts.init(this.$refs.chart)
this.chart.setOption({
title: {
text: 'Echarts大标题',
subtext: 'Echarts副标题'
},
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [
{
name: '销量',
type: 'bar', // 柱状图
data: [5, 20, 36, 10, 10, 20]
},
{
name: '利润',
smooth: true,
type: 'line', // 折线图
data: [2, 23, 5, 54, 9, 33]
}
]
})
},
},
mounted () {
this.initChart();//页面挂载echarts
},
</script>
效果图:
echarts.js【按需引入】:
1)在单页面直接引入
// 某个vue文件
import echarts from '../../js/echarts.js'
2)完整代码
注意:容器设置高度
< template >
<div id="chart" style="height: 400px" ref="chart"></div>
</ >
<script>
// 某个vue文件
import echarts from '../../js/echarts.js'
export default {
data() {
chart: null // echarts图表实例
},
methods: {
initChart() {
this.chart = this.$echarts.init(this.$refs.chart)
this.chart.setOption({
title: {
text: 'echarts主标题'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
label: {
backgroundColor: '#6a7985'
}
}
},
legend: {
data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
},
toolbox: {
feature: {
saveAsImage: { }
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
boundaryGap: false,
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
}
],
yAxis: [
{
type: 'value'
}
],
series: [
{
data: [720, 600, 850, 780, 670, 1110, 630],
type: 'bar',
showBackground: true,
backgroundStyle: {
color: 'rgba(180, 180, 180, 0.2)'
}
},
{
name: 'Union Ads',
type: 'line',
stack: 'Total',
areaStyle: { },
emphasis: {
focus: 'series'
},
data: [220, 182, 191, 234, 290, 330, 310]
},
{
name: 'Search Engine',
type: 'line',
stack: 'Total',
label: {
show: true,
position: 'top'
},
areaStyle: { },
emphasis: {
focus: 'series'
},
data: [220, 232, 201, 234, 290, 330, 320]
},
]
})
},
},
mounted () {
this.initChart()//页面挂载echarts
},
</script>
效果图:
作者上篇文章,