pythonバックエンドを使用してブラウザーでグラフを描画する必要があります(ここでは問題にならない場合があります)。これを実現するためのJQPlot、D3、Google Chartsなどのライブラリが多数あります。
しかし、それらを分類すると、HTML5 CanvasベースまたはSVGベースのいずれかになります。どちらも独自のスペースで重要なテクノロジーです。だが
for charting as a subject, shall I go with SVG based libraries or
HTML5 Canvas based libraries. What are downside and benefits of
both approaches.
私はこれまでチャート作成の経験がなく、プロジェクトを開始した後で壁にぶつけたくありません。
大量のデータを含むプロジェクトは、キャンバスを優先する場合があります。 SVGアプローチは通常、(パスを作成しない限り)DOMノードをポイントごとに作成します。
DOMツリーのサイズの爆発
パフォーマンスの問題
パスを使用すると、この問題を回避できますが、対話性が失われます。
株価チャートを作成しているとします。たとえば、最大5年と取引終了データのサンプルのみでチャートについて話している場合、答えは明らかにSVGだと思います。取引の初日からのウォルマートの履歴データを見たり、1分ごとに完全な取引情報を表示したりする場合は、SVGを注意深く確認する必要があります。特に、1つのサンプルを1つのSVGノードに移動する場合は、SVGがバラバラになるため、ファンシーなメモリ管理とフェッチオンデマンドアプローチを採用する必要があります。
interactivityが要件である場合、SVGは次のように簡単にエッジを持ちます。
もちろん、fullインタラクティビティが必要な場合は、パスの折りたたみなど、SVGのスケーリングを可能にするメカニズムに逆行する可能性があるため、固有のテンションがあります。
極端な場合にはトレードオフがあります。サイズが小さい場合、答えはSVGの手に負うところです。サイズが大きく対話性がない場合の答えは、パス描画のみまたはCanvasを使用したSVGです。サイズが大きく対話性が必要な場合は、キャンバスまたはトリッキーなSVGを使用する必要がありますが、どちらの場合も複雑です。
ZingChart や Dojo など、一部のライブラリはキャンバスとSVGの両方のレンダリングを提供します。他の人は2つのオプションの1つだけを使い続ける傾向があります。