更新图表两次后,Highcharts-隐藏系列不再显示

时间:2015-04-21 11:26:52

标签: javascript jquery highcharts

我做过类似的事情:

  1. 有一个复选框可以更改情节数据
  2. 选中/取消选中复选框后,通过相应调用series[i].update()来更新系列数据数组。
  3. 但是我有一个问题,当用户隐藏一个系列并尝试选中复选框然后取消选中,然后重新显示该系列时,该系列不再显示。

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

    我重现了问题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]
            });
        }
    }
    

1 个答案:

答案 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);
        }