基本的に何千ものポイントをズーム可能でパン可能なグラフにレンダリングするプロジェクトを更新するために使用する適切なテクノロジを選択しようとしています。Protovis を使用した現在の実装は、パフォーマンスが低下しています。ここでチェックしてください:
http://www.planethunters.org/classify
完全にズームアウトすると、約 2000 ポイントあります。下部のハンドルを使用して少しズームインし、ドラッグしてパンします。非常に高速なコンピューターを使用していない限り、CPU 使用率が 1 つのコアで 100% に達する可能性があります。フォーカス領域を変更するたびに、プロトビスへの再描画が呼び出されますが、これは非常に遅く、より多くのポイントが描画されると悪化します。
インターフェイスを更新し、基礎となる視覚化テクノロジを変更して、アニメーションとインタラクションの応答性を高めたいと考えています。次の記事から、選択は別の SVG ベースのライブラリか、キャンバス ベースのライブラリのどちらかのようです。
http://www.sitepoint.com/how-to-choose-between-canvas-and-svg/
Protovis から派生したd3.jsは SVG ベースであり、アニメーションのレンダリングに適していると考えられています。ただし、どれだけ優れているか、パフォーマンスの上限がどの程度かについては疑問です。そのため、KineticJSのようなキャンバス ベースのライブラリを使用して、より完全なオーバーホールも検討しています。ただし、いずれかの方法を使用する前に、これほど多くのデータを使用して同様の Web アプリケーションを作成した人から意見を聞きたいと思います。
最も重要なことはパフォーマンスです。次に、他のインタラクション機能の追加とアニメーションのプログラミングの容易さに焦点を当てます。一度に 2000 ポイントを超えることはなく、各ポイントに小さなエラー バーが表示されます。ズームイン、ズームアウト、パンはスムーズである必要があります。最新の SVG ライブラリがこれでまともな場合、おそらく d3 の使いやすさは、KineticJS などのセットアップの増加を上回るでしょう。絶対にそっちの方がいい。
NYTimes が作成した SVG を使用しているが、許容できるほどスムーズにアニメーション化するアプリの例: http://www.nytimes.com/interactive/2012/05/17/business/dealbook/how-the-facebook-offering-compares.html . そのパフォーマンスを得ることができ、独自のキャンバス描画コードを記述する必要がない場合は、おそらく SVG を使用します。
一部のユーザーがキャンバス レンダリングと組み合わせた d3.js 操作のハイブリッドを使用していることに気付きました。ただし、これに関する多くのドキュメントをオンラインで見つけることも、その投稿の OP に連絡することもできません。この種の DOM からキャンバスへの ( demo、code ) 実装を行った経験のある方がいらっしゃいましたら、ご連絡をお待ちしております。データを操作できることと、それをレンダリングする方法 (したがってパフォーマンス) をカスタム制御できることの良いハイブリッドのようですが、すべてを DOM にロードする必要があると、それでも速度が低下するのではないかと思います。
この質問に似た既存の質問がいくつかあることは知っていますが、まったく同じことを尋ねているものはありません。ご協力いただきありがとうございます。
フォローアップ:私が最終的に使用した実装はhttps://github.com/zooniverse/LightCurvesにあります