为什么highcharts不能正确刷新此图表?

时间:2013-09-04 15:18:39

标签: javascript highcharts

Highcharts无法以任何智能方式刷新我的图表。这似乎是一个相当常见的用例:

我正在渲染一个面积百分比图表,这是第一次完美渲染。在某些时候数据会发生变化,我想刷新图表。

街道上的一句话是我应该手动迭代我的数据并在每个系列上调用setData。这种方法的问题在于,当我尝试刷新时,系列不保证是相同的。因此,存在使用此技术会使数据不匹配的边缘情况。

我试过了:

data = this.getAreaChartData();

if (data !== null && data !== undefined) {

var dataLength = data.length;
for (var dataIndex = 0; dataIndex < dataLength; dataIndex++) {

    var currentSeries = data[dataIndex];

    this.chart.series[dataIndex] = currentSeries;

}

为简单起见,我们假设getAreaChartData()生成完全有效的数据。当我像这样设置系列时,没有任何事情发生,图表会出现问题。

我试着打电话给chart.redraw()只是为了看看我是否可以强迫它,但仍然没有任何反应。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您应该使用update使用一组新选项更新系列。 如下所示:

data = this.getAreaChartData();

var dataLength = data.length,
    chart = this.chart;
for( var dataIndex = 0; dataIndex < dataLength; dataIndex++ ) {

    // add series without redraw, we'll redraw later
    chart.series[ dataIndex ].update( data[dataIndex], false );
}

chart.redraw();

参考:

答案 1 :(得分:0)

更新系列中的数据后,应该使用setData函数。只有这样,高级图表才会知道您对数据进行了更改。与更新函数相比,使用setData更有意义,因为在文档中提到更新函数更昂贵(性能明智)。 http://api.highcharts.com/highstock#Series.update