web-dev-qa-db-ja.com

D3:大きなデータセットを表示する方法

大規模なデータセットは10 ^ 5個のデータポイントで構成されています。そして今、私は大規模なデータセットに関連する次の質問を検討しています:

非常に大きなデータセットを視覚化する効率的な方法はありますか?私の場合、ユーザーセットがあり、各ユーザーは10 ^ 3アイテムを持っています。合計で10 ^ 5個のアイテムがあります。各ユーザーのすべてのアイテムを一度に表示して、ユーザー間の迅速な比較を可能にしたいと考えています。一部の団体はリストの使用を提案していますが、この大きなデータセットを処理するときはリストが唯一の選択だとは思いません。

各ユーザーのすべてのアイテムを一度に表示したい。

これは、ユーザーをクリックしたときにすべてのデータポイントを表示したいことを意味し、2つの用途をクリックしたときに、それらのデータポイント間の違いを比較できます。

23
SolessChong

問題はそれらをレンダリングしないことです。レンダリングパーツをキャンバスまたはwebglに切り替えることができます。 D3データバインディングで canvas および X3DOM を使用するいくつかの例を見つけることができます。しかし、DOMオブジェクトの数のために遅くなるので、この 平行座標の例 のように、それらを分離しておくことをお勧めします。この例では、すべてのデータ要素を読み込んでレンダリングするプログレッシブレンダリングも特徴です。

それらをメモリに保持し、クライアント側で操作することも問題ではありません。 D3は Crossfilter と共に使用されることが多く、「100万以上のレコード」の迅速なデータ操作が可能です。

10 ^ 5データポイントは、SVGインタラクティブレンダリングにはわずかに多すぎるポイントです。ただし、ビジュアライゼーションのデータポイントが多すぎると、抽象化のレベルが間違っているか、プロット戦略が間違っているというヒントになります。多くのポイントがおそらく重なるか、視覚的に融合します。それでは、これらの形状を集約しないでください。たとえば、ヒートマップ(重複するポイントの数のカラースケール)、ビニング(ヘックスビン、ヒストグラム)、またはデータセットの集計を使用しますか?

概要とデータセットの比較が必要な場合は、データセットを要約するいくつかの統計のような抽象化が必要な場合があり、詳細をオンデマンドで確認します(セマンティックズーム、フォーカス+コンテキスト、ドリルダウン)。

40
Biovisualize