我在使用vue2中的echarts组件展示数据,后端返回的数据是这样的[ { "server": "172.28.35.50", "monitorDate": "2023-05-22 00:00:00", "name": "QUEUE_INVSEGINFO_OUT_CHANGE", "enqueueCount": 4374 }, { "server": "172.28.35.50", "monitorDate": "2023-05-22 00:00:00", "name": "QUEUE_EtermAV", "enqueueCount": 153763 }, { "server": "172.28.35.50", "monitorDate": "2023-05-22 00:00:00", "name": "QUEUE_paysend", "enqueueCount": 1620 }, { "server": "172.28.35.50", "monitorDate": "2023-05-22 00:00:00", "name": "QUEUE_ORDHNL", "enqueueCount": 0 }, { "server": "172.28.35.50", "monitorDate": "2023-05-22 00:00:00", "name": "QUEUE_ticketInfoAll_test", "enqueueCount": 0 }}我想以monitorDate为横轴值 enqueueCount为纵坐标值 根据name属性的不同做出不同这折线。作图的部分代码应该怎么写
时间: 2023-07-03 19:18:27 浏览: 40
您可以先对返回的数据进行处理,将每个不同的 name 属性的数据分离出来,然后再将它们分别作为一组数据。具体的代码可以参考下面的示例:
```javascript
<template>
<div class="chart-container">
<div ref="chart" class="chart"></div>
</div>
</template>
<script>
import echarts from 'echarts'
export default {
data() {
return {
chartData: [], // 后端返回的数据
chartSeries: [] // 处理后的数据
}
},
mounted() {
this.initChart()
},
methods: {
initChart() {
// 将 chartData 按照 name 属性分组
const dataMap = {}
this.chartData.forEach(item => {
if (!dataMap[item.name]) {
dataMap[item.name] = {
name: item.name,
type: 'line',
data: []
}
}
dataMap[item.name].data.push([item.monitorDate, item.enqueueCount])
})
// 将分组后的数据转换成数组形式
const series = []
for (const key in dataMap) {
series.push(dataMap[key])
}
// 初始化 echarts 实例
const myChart = echarts.init(this.$refs.chart)
// 配置选项
const options = {
xAxis: {
type: 'time',
splitLine: {
show: false
}
},
yAxis: {
type: 'value',
splitLine: {
show: false
}
},
series
}
// 设置选项并渲染图表
myChart.setOption(options)
}
}
}
</script>
<style>
.chart-container {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.chart {
width: 800px;
height: 600px;
}
</style>
```
以上代码中,首先将返回的数据按照 name 属性进行分组,然后将每个分组的数据转换成 echarts 适用的格式,最后通过配置选项并将其渲染到页面上。在配置选项中,xAxis 的 type 属性设置为 'time',表示使用时间作为横轴值。