让我说有25条折线的折线图,但只想给其中3条涂上颜色,而其他的则涂成灰色,该怎么办?
您可以使用Highcharter的hc_chart
函数包含chart.events.load事件,您可以在其中触发自定义JavaScript代码。使用JS("")
函数将JavaScript代码注入R。在该JavaScript代码中,您可以循环浏览所有系列并使用series.update()
方法更新其颜色。
我今天在这里做的完全一样:How to change the color of marker-points dynamically based on y-position但是我没有改变系列,而是改变了标记的颜色。
API参考:https://api.highcharts.com/highcharts/chart.events.loadhttps://api.highcharts.com/class-reference/Highcharts.Series#update
这里是显示它的JavaScript演示:https://jsfiddle.net/BlackLabel/cyhd5Ln2/
var series = [];
for (let i = 0; i < 15; i++) {
series.push({
data: [5 + i, 6 + i, 3 + i, 4 + i]
});
}
Highcharts.chart('container', {
chart: {
events: {
load: function () {
this.series.forEach(function (series, i) {
if (i < 3) {
series.update({
color: 'red'
}, false);
} else {
series.update({
color: 'grey'
}, false);
}
});
this.redraw();
}
}
},
series: series
});
而不是更新图表15次(当您拥有更多系列时,这会导致性能下降),我更新了redraw flag: false
,在for loop
之后我只做了一次chart.redraw()
。