如何用Vue和ECharts4Taro3展示并分析时间序列数据的趋势

1. 前言

现今,数据分析、可视化成为许多领域的重要任务,展示数据的趋势是其中之一。而Vue和ECharts4Taro3就是两个非常不错的工具,在展示时间序列数据趋势时也有很好的表现。本文将介绍如何使用Vue和ECharts4Taro3展示并分析时间序列数据的趋势。

2. 准备工作

2.1 安装vue-cli及新建项目

Vue-CLI 是一个脚手架工具,用于快速搭建 Vue 项目。运行以下命令安装Vue CLI。

npm install -g @vue/cli

安装完成后,创建新的Vue项目并进入项目目录。

vue create vue-echarts-taro3

然后选择你需要的项目配置,本文选择默认配置Default (Vue 3 Preview) ([Vue 3] babel, eslint)。等待依赖包下载完成后,运行以下命令启动项目。

cd vue-echarts-taro3

npm run serve

此时,在浏览器上输入 http://localhost:8080 将看到新建的Vue项目界面。

2.2 安装ECharts4Taro3

ECharts4Taro3是基于Taro3和ECharts封装的跨端图表库,我们可以使用npm安装ECharts4Taro3。

npm install --save echarts-for-taro3

2.3 编写数据及引入样式

在Vue项目中,定义一个时间序列数据列表。

const timeList = [

'2020-1', '2020-2', '2020-3', '2020-4',

'2020-5', '2020-6', '2020-7', '2020-8',

'2020-9', '2020-10', '2020-11', '2020-12'

]

引入ECharts4Taro3组件及ECharts样式文件,可放在项目入口文件main.js中引入。

import { initECharts } from 'echarts-for-taro3'

import 'echarts/lib/chart/line'

import 'echarts/lib/component/title'

接着,在组件中定义初始的option对象,用于渲染图表,样式可自行选择。

data() {

return {

option: {

title: {

text: '时间序列数据趋势图'

},

xAxis: {

type: 'category',

data: timeList

},

yAxis: {

type: 'value',

name: '数据'

},

series: [{

data: [],

type: 'line'

}]

}

}

}

3. 绘制图表

通过在template中引入组件,并在script中使用ref绑定组件,我们可以使用组件提供的setOption方法将数据展示在图表中。

template: <ec-canvas id="mychart-dom"></ec-canvas>,

mounted() {

const ecComponent = this.$refs['mychart-dom'];

ecComponent.init((canvas, width, height) => {

const chart = initECharts(canvas, null, {

width: width,

height: height

});

chart.setOption(this.option);

return chart;

});

}

现在我们就可以在浏览器中看到初始的展示结果,如下图所示。

4. 加载数据

4.1 异步加载数据

这里我们假设我们的数据为在每个月的第10天的时候的数据,将数据当做异步请求进行处理。

async created() {

const seriesData = await this.getData()

this.option.series[0].data = seriesData

},

methods: {

async getData() {

const seriesData = []

for (let i = 0; i < timeList.length; i++) {

const data = await this.fetchData(i)

seriesData.push(data)

}

return seriesData

},

async fetchData(month) {

return await Promise.resolve((Math.random() * 1000 * month).toFixed(2))

}

}

4.2 渲染结果

此时,再次刷新页面将展示数组data中的数据在图表中呈现出来。

5. 数据分析与操作

5.1 数据操作

在Vue中可以通过v-model绑定,为图表添加用户可交互的操作,例如下面的自定义月份值。

template: <div>

<ec-canvas id="mychart-dom" ref="mychartDOM"></ec-canvas>

<br>

<label for="month">自定义月份:</label>

<input type="text" v-model="selectedMonth">

</div>

methods: {

updateData() {

const { selectedMonth } = this

if (!selectedMonth) {

return

}

const index = timeList.indexOf(selectedMonth)

if (index === -1) {

return

}

data[index] = (Math.random() * 1000 * (index + 1)).toFixed(2)

const ecComponent = this.$refs['mychartDOM']

ecComponent.chart.setOption({

series: [{

data: data

}]

})

}

}

5.2 数据分析

ECharts提供了丰富的数据过滤和分析API,例如我们可以通过tooltip的触发事件来展示指定数据的变化趋势。

mounted() {

const ecComponent = this.$refs['mychart-dom']

ecComponent.init((canvas, width, height) => {

const chart = initECharts(canvas, null, {

width: width,

height: height

})

chart.setOption(this.option)

chart.on('updateAxisPointer', (event) => {

const xAxisInfo = event.axesInfo[0]

if (xAxisInfo) {

const { value: month } = xAxisInfo.value

this.selectedMonth = month

}

})

return chart

})

}

methods: {

snapshot() {

const ecComponent = this.$refs['mychartDOM']

const imgBase64 = ecComponent.chart.getDataURL({

type: 'png',

pixelRatio: 2

})

window.open(imgBase64, '_blank')

},

},

},

这里展示了一个截图的例子。

snapshot() {

const ecComponent = this.$refs['mychartDOM']

const imgBase64 = ecComponent.chart.getDataURL({

type: 'png',

pixelRatio: 2

})

window.open(imgBase64, '_blank')

}

6. 总结

本文介绍了如何使用Vue和ECharts4Taro3展示并分析时间序列数据的趋势。我们了解了如何初始化图表,并加载数据,即数据中分析及操作。在实践中,你可以根据实际需求对代码进行适当的修改和优化,感受到ECharts4Taro3带来的快速开发和高灵活性。