echarts js生成profile图。根据数组内对象的两个时间值生成x轴时间轴,再由对象中的dev值分成不同组生成y轴,中间的图形的值由同时间,同一dev对应生成
时间: 2024-02-26 08:58:14 浏览: 109
profile图通常用于展示代码或接口的性能数据,其中x轴表示时间,y轴表示不同的操作或者服务。你可以使用ECharts库来绘制profile图。
首先,你需要将你的性能数据转化为ECharts能够识别的数据格式,通常是一个二维数组。每个数组元素表示一个数据点,包括x轴和y轴的坐标值。
在这个问题中,你可以将每个对象的时间值作为x轴坐标值,将dev值作为y轴坐标值,将中间图形的值作为数据点的值。你可以使用ECharts的scatter图表来绘制这个图形,每个点的大小和颜色可以表示数据点的值。
下面是一个示例代码,你可以根据你的数据进行相应的修改:
```javascript
// 构造数据
var data = [
{ time1: '2021-01-01 00:00:00', time2: '2021-01-01 00:01:00', dev: 'dev1', value: 100 },
{ time1: '2021-01-01 00:00:00', time2: '2021-01-01 00:01:00', dev: 'dev2', value: 200 },
{ time1: '2021-01-01 00:01:00', time2: '2021-01-01 00:02:00', dev: 'dev1', value: 150 },
{ time1: '2021-01-01 00:01:00', time2: '2021-01-01 00:02:00', dev: 'dev2', value: 250 },
{ time1: '2021-01-01 00:02:00', time2: '2021-01-01 00:03:00', dev: 'dev1', value: 200 },
{ time1: '2021-01-01 00:02:00', time2: '2021-01-01 00:03:00', dev: 'dev2', value: 300 },
];
// 将数据按照dev分组
var groups = {};
for (var i = 0; i < data.length; i++) {
var dev = data[i].dev;
if (!groups[dev]) {
groups[dev] = [];
}
groups[dev].push(data[i]);
}
// 构造x轴时间轴
var timeAxis = [];
for (var i = 0; i < data.length; i++) {
var time1 = data[i].time1;
if (timeAxis.indexOf(time1) === -1) {
timeAxis.push(time1);
}
var time2 = data[i].time2;
if (timeAxis.indexOf(time2) === -1) {
timeAxis.push(time2);
}
}
timeAxis.sort();
// 构造y轴数据
var yAxis = [];
var i = 0;
for (var dev in groups) {
var group = groups[dev];
var values = [];
for (var j = 0; j < timeAxis.length; j++) {
var time = timeAxis[j];
var value = null;
for (var k = 0; k < group.length; k++) {
var d = group[k];
if (d.time1 === time || d.time2 === time) {
value = d.value;
break;
}
}
values.push(value);
}
yAxis.push({
name: dev,
type: 'scatter',
data: values,
symbolSize: function (value) {
return value / 10;
},
itemStyle: {
color: function (params) {
var value = params.value;
if (value === null) {
return '#ccc';
} else if (value < 100) {
return '#ff0000';
} else if (value < 200) {
return '#ffff00';
} else {
return '#00ff00';
}
}
}
});
}
// 绘制图表
var myChart = echarts.init(document.getElementById('myChart'));
myChart.setOption({
xAxis: {
type: 'category',
data: timeAxis
},
yAxis: yAxis
});
```
这段代码将数据按照dev值分组,并构造了x轴时间轴和y轴数据。每个数据点的大小和颜色根据值的大小进行了相应的调整。最后,使用ECharts的setOption方法将图表绘制出来。
阅读全文