6

私は、データを変更して再描画することにより、時間の経過とともに図を「アニメーション化」しています。

// initialization
var data = ...
var targetPlot = $.jqplot('#diagram', data, diagramOptions);

しばらくしてから、何らかの方法でデータを変更し、図を更新したいと思います。次の解決策が機能します。

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

ビットこれは完全な再描画です。大量のデータと短い間隔では、jQPlotは多くのメモリを消費し、図がちらつきます。

これを正しく行う方法は?

redraw-functionを使用したソリューションでは、古い図のみが描画されます。

// update Data
targetPlot.data = ...;
targetPlot.redraw();
4

1 に答える 1

15

これは私が多くの調査の後に見つけた方法です。私は誰かがこの質問を読むのを助けるためにこれを書き留めています。

データを更新する正しい場所はseriesプロパティにあります。データを更新した後、プロットを再描画できます。

targetPlot.series[0].data = myData;
targetPlot.redraw();

replot()軸が変更された場合は、次の代わりにを使用して再スケーリングできますredraw()

targetPlot.replot({resetAxes:true});

これは、毎回新しいプロットを再描画するよりもはるかに高速です。

于 2011-07-26T08:54:09.990 に答える