dc.jsを使用してライブデータの視覚化(つまり、新しいデータが定期的に到着する)を実装しようとしています。私が抱えている問題は、次の通りです。新しいデータがプロットに追加されると、既存のポイントは変更されていなくても、しばしば「踊る」ようになります。これは避けられますか?dc.js - 散布図にデータを追加するときのデータポイントのアニメーションを回避する
following fiddleはこれを示しています。
クロスフィルタはデータを内部的にソートするため、内部ストレージ内での位置(インデックス)が変更されたデータ項目のチャート上をポイント移動することになります。データは次のように追加されます:
var data = [];
var ndx = crossfilter(data)
setInterval(function() {
var value = ndx.size() + 1;
if (value > 50) {
return;
}
var newElement = {
x: myRandom(),
y: myRandom()
};
ndx.add([newElement]);
dc.redrawAll();
}, 1000);
アイデアはありますか?
私はこの問題をもう少し詳しく説明します:クロスフィルタグループとディメンションの両方が順序付けされたデータを返すが、d3.js (何dc。jsが構築されている)は、デフォルトで、データポイントがデータ配列内のインデックスによって識別されると仮定します。私はdc.js散布図を代わりにインデックスとしてグループキーを使用するように更新することができると思いますか?わからない。ここで起こるはずですが、私は信じています:https://github.com/dc-js/dc.js/blob/develop/src/scatter-plot.js#L79 –
答えに感謝!私は簡単にソースを調べました。私のスキルは十分ではありません。 disableTransitionsスイッチがあるのがわかりますが、すべてのアニメーションをブロックするので、プロットが少し粗くなります。私の現在のプロジェクトでは、データポイントの動きを無効にし、他のすべてのアニメーションを維持するだけで十分でしょう。これを持つためにdcにどのようにパッチを当てるか考えてみましょうか? –
私は分かりませんが、理論的にはd3.jsの観点から、 '.data(_chart.data());'は '.data(_chart.data()、function(d){return d.something_unique_per_data_point} ); '。私はあなたがその機能の中のグループキーにアクセスできると思うので、それを使うことができます。私はdc.jsリポジトリで問題をオープンし、このディスカッションを参照することをお勧めします。 –