我做过类似的事情:
series[i].update()
来更新系列数据数组。但是我有一个问题,当用户隐藏一个系列并尝试选中复选框然后取消选中,然后重新显示该系列时,该系列不再显示。
请注意,如果我只选中一次此框,则不会出现问题,只有在我们隐藏系列后多次勾选此框时才会出现问题。
我重现了问题HERE (JSFiddle)
更新图表的代码是:
if (chart) {
for (var i = 0; i < chart.series.length; i++) {
//chart.series[i].setVisible(true, true); // Note that if I add this code, then no problem
chart.series[i].update({
data: dataArray[i]
});
}
}
答案 0 :(得分:0)
问题是你基于Highcharts生成的点。隐藏系列时,则不存在点并为系列设置空数据。换句话说,它看起来像这样:chart.series[i].setData( [] );
。
我建议对数据使用单独的数组,并将其用于计算。一般的想法:http://jsfiddle.net/pGuEv/37/(我知道,它的工作方式有点不同,但显示应该如何编写)
var origData = [
[11, 22, 33, 44, 55, 66, 77, 88],
[10, 20, 30, 40, 50, 60, 70, 80]
];
$('#container').highcharts({
series: [{
data: origData[0].slice()
}, {
data: origData[1].slice()
}]
});
后来:
for (var i = 0; i < origData.length; i++) { // original data
var onePlotData = [];
var sum = 0; //前面点的合计值s
for (var j = 0; j < origData[i].length; j++) { // original data
var value = origData[i][j]; // original data
var point = {
//x: value.x,
y: state ? value + sum : value - sum,
//total: value.total
}
sum = point.y;
onePlotData.push(point);
}
dataArray.push(onePlotData);
}