echart图标 折线图 每条折线累计显示
时间: 2024-12-15 09:13:04 浏览: 31
在ECharts中,如果你想要实现折线图每条折线累计显示的效果,可以利用`stack`属性和`series`的`label`、`data`等配置项。`stack`属性能使各组数据按堆叠的方式绘制在同一图表中,而`label`可以添加累积值标签。
下面是一个简单的示例,假设我们有两组数据,`value1`和`value2`,它们需要累加在一起显示:
```javascript
var option = {
title: {
text: '累计折线图'
},
tooltip: {},
xAxis: {
type: 'category',
data: ['A', 'B', 'C', 'D', 'E']
},
yAxis: {
type: 'value'
},
series: [
{
name: '累计值1',
type: 'line',
stack: '总量',
data: [40, 60, 70, 80, 90],
label: {
formatter: function (params) {
return params.value.toFixed(0);
}
}
},
{
name: '累计值2',
type: 'line',
stack: '总量',
data: [30, 50, 60, 70, 80],
label: {
formatter: function (params) {
return '(' + params.seriesName + '): ' + (params.value - prevValue).toFixed(0);
},
useHtml: true,
show: params.name === '累计值2'
},
onInit: initLabel,
onAfterUpdate: updateLabel
}
],
onBeforeRender: function () {
this.eachSeries(function (series) {
if (series.stack == '总量') {
series.data[0] = 0; // 初始化第一条数据为累计值的起点
}
});
},
seriesColors: ['#0099ff', '#ff6600'], // 系列颜色
legend: {
data: ['累计值1', '累计值2']
}
};
// 初始化label的变量
var prevValue;
function initLabel(params) {
prevValue = params.currentData[0];
}
function updateLabel(params) {
prevValue += params.currentData[0];
}
```
在这个例子中,`onBeforeRender`回调初始化了第一点数据,`initLabel`函数存储上一次累计值,`updateLabel`函数更新累计值并显示在`formatter`里。注意`show: params.name === '累计值2'`确保只有第二条折线才显示累积值。
阅读全文