前端vue项目中echarts按需引入,性能优化的数据可视化图表

项目场景:

在vue中使用Echarts可视化图表,官方网址如下

Handbook - Apache 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>

效果图:


作者上篇文章,

前端项目中vue如何使用Echarts,实现数据可视化图表_意初的博客-CSDN博客在vue中使用Echarts可视化图表,官方网址如下Handbook - Apache ECharts② 在vue项目中引入 ECharts全局引入方法,在main.js里③在单页面文件里创建容器一定要给容器设置高度!不然图表出不来! 注意:ref定义的属性名要保持一致,这点很重要⑥在mounted里初始化页面mounted和methods同层级,切忌嵌套不了解的去多看看vue生命周期。简单科普, 作者上一篇文章:解决前端项目问题,基于vue的后端https://blog.csdn.net/weixin_43928112/article/details/125464783

猜你喜欢

转载自blog.csdn.net/weixin_43928112/article/details/125492943