Hichcharts-隐藏系列在更新两次情节后不再显示



我做了这样的事情:

  1. 具有用于更改图数据的复选框
  2. 选中/取消选中该复选框后,通过相应地调用series[i].update()来更新系列数据数组。

但是我有一个问题,当一个系列被用户隐藏并尝试选中复选框然后取消选中,然后重新显示该系列时,该系列不会再次显示。

请注意,如果我只选中该框一次,则不会出现问题,只有在隐藏系列后多次选中该框时才会出现问题。

我在这里重现了这个问题(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]
        });
    }
}

问题是你基于高图表生成的点。当序列处于隐藏状态时,点将不存在,您可以为序列设置空数据。换句话说,它看起来像这样: 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);
        }

最新更新