如何使用jQuery和jQplot动画图表(更新数据)

San*_*o L 6 javascript diagram jquery jquery-plugins jqplot

随着时间的推移,我通过更改数据并重新绘制它们来"动画化"图表.

// initialization
var data = ...
var targetPlot = $.jqplot('#diagram', data, diagramOptions);
Run Code Online (Sandbox Code Playgroud)

一段时间后,我将以某种方式更改数据,并希望更新图表.以下解决方案有效:

// update Data
targetPlot.data = ...;
// remove old diagram
$('#<%= "diagram" + diagram.id.to_s %>container').empty();
// redraw
targetPlot = $.jqplot('#diagram', data, diagramOptions);
Run Code Online (Sandbox Code Playgroud)

这是一个完整的重绘.由于大量数据和短暂的间隔,jQPlot占用大量内存,图表闪烁.

怎么做对吗?

使用redraw-function的解决方案只绘制旧图:

// update Data
targetPlot.data = ...;
targetPlot.redraw();
Run Code Online (Sandbox Code Playgroud)

San*_*o L 15

这是我经过大量调查后发现的方式.我写这篇文章是为了帮助有人阅读这个问题.

更新数据的正确位置在系列属性中,更新数据后,您可以重绘绘图:

targetPlot.series[0].data = myData;
targetPlot.redraw();
Run Code Online (Sandbox Code Playgroud)

如果你的轴改变,那么你可以通过重新调节replot()的,而不是redraw():

targetPlot.replot({resetAxes:true});
Run Code Online (Sandbox Code Playgroud)

这比每次重新绘制新绘图要快得多.

  • 你也可以激活[`animateReplot`](http://www.jqplot.com/deploy/dist/examples/barLineAnimated.html)在replot上获得一点动画 (3认同)