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()
只是为了看看我是否可以强迫它,但仍然没有任何反应。
我做错了什么?
答案 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