echarts js生成profile图。根据数组内对象的两个时间值生成x轴时间轴,再由对象中的dev值分成不同组生成y轴,中间的图形的值由同时间,同一dev对应生成
时间: 2024-03-08 16:49:14 浏览: 339
echarts js图形
5星 · 资源好评率100%
一个简单的实现思路是:
1. 遍历数组,获取所有时间值和dev值,分别存储到两个数组中。
2. 对时间值数组进行排序,并去重。
3. 根据排序后的时间值数组,生成x轴时间轴。
4. 根据dev值数组,生成y轴分类。
5. 遍历数组,将每个对象按照时间值和dev值分组,将同一组的对象的值相加,生成中间的图形的值。
6. 使用echarts绘制图表,x轴为时间轴,y轴为dev分类,中间的图形为对应的值。
示例代码如下:
```javascript
// 示例数据
var data = [
{ time: '2021-01-01 10:00:00', dev: 'A', value: 10 },
{ time: '2021-01-01 10:00:00', dev: 'B', value: 20 },
{ time: '2021-01-01 11:00:00', dev: 'A', value: 30 },
{ time: '2021-01-01 11:00:00', dev: 'B', value: 40 },
{ time: '2021-01-01 12:00:00', dev: 'A', value: 50 },
{ time: '2021-01-01 12:00:00', dev: 'B', value: 60 },
];
// 获取时间值数组和dev值数组
var timeArr = [],
devArr = [];
data.forEach(item => {
timeArr.push(item.time);
devArr.push(item.dev);
});
// 对时间值数组进行排序去重
timeArr = Array.from(new Set(timeArr)).sort();
// 生成x轴时间轴
var xAxis = { type: 'category', data: timeArr };
// 生成y轴分类
var yAxis = { type: 'category', data: Array.from(new Set(devArr)) };
// 分组并计算值
var seriesData = [];
devArr.forEach(dev => {
var groupData = {};
timeArr.forEach(time => {
groupData[time] = 0;
});
data.filter(item => item.dev === dev)
.forEach(item => {
groupData[item.time] += item.value;
});
seriesData.push({ name: dev, type: 'line', data: Object.values(groupData) });
});
// 使用echarts绘制图表
var chart = echarts.init(document.getElementById('chart'));
chart.setOption({
xAxis: xAxis,
yAxis: yAxis,
series: seriesData
});
```
以上代码仅为示例,具体实现方法还可以根据需求进行调整。
阅读全文