0

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()只是想看看我是否可以强迫它,但仍然没有任何反应。

我究竟做错了什么 ?

4

2 回答 2

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();

参考:

于 2013-09-04T17:38:29.327 回答
0

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

于 2016-03-30T06:07:47.287 回答