プロジェクトでchart.jsを数回使用しましたが、d3.jsを使用したことはありません。多くの人が、d3.jsはチャートに最適なjavascriptフレームワークであると言いますが、特にchart.jsとの比較が必要な場合は、誰もその理由を説明できません。
私はこれを見つけました: http://www.fusioncharts.com/javascript-charting-comparison/ しかし、それは私が探していたものではありません。
これらのフレームワークの使いやすさとパフォーマンス(チャートのみ)の比較について誰もが知っていますか?
d3.js
は「チャート」ライブラリではありません。SVG/HTMLを作成および操作するためのライブラリです。データの視覚化と操作を支援するツールを提供します。これを使用して従来のグラフ(棒、折れ線、円グラフなど)を作成できますが、さらに多くのことができます。もちろん、この「非常に多くの能力を備えた」学習曲線は急勾配になります。 d3.js
-nvd3.js
、dimple.js
、dc.js
の上に構築された従来のチャートライブラリはたくさんあります。
私はChart.js
に慣れていませんが、ウェブサイトをざっと見てみると、ミルチャートライブラリの実行に近いことがわかります。 6つの基本的なチャートタイプをサポートしており、あなたは決してやるつもりはありません stufflikethiswithit 。 しかし、APIは簡単に見え、使いやすいと確信しています。
それ以外は、2つの最も明白な違いは、Chart.js
はキャンバスベースであるのに対して、d3.js
は主にSVGについてです。 (今私は主にと言います。なぜならd3.js
はすべての種類のHTML要素を操作できるので 使用することさえ可能 キャンバスに描くのを助けるためです。)一般に、canvasは多数の要素に対してSVGを実行します(私は非常に大規模に話している-何千もの点、線など)。一方、SVGは操作や操作が簡単です。 SVGを使用すると、各ポイント、ラインなどがDOMの一部になります。そのポイントを緑にしたいので、変更するだけです。 canvasでは、変更を加えるために再描画される静的な描画が行われます。もちろん、通常は気付かないほど高速に描画されます。これが 良い読み物 Microsoftのものです。
モバイルデバイスでチャートを表示するための高速チャートライブラリを探しているので、パフォーマンスは私にとって重要でした。また、商用利用を可能にするライセンスが必要でした。私は比較しました:
グラフはネイティブアプリ内のWebViewコンポーネント内にロードされ、すべてのデータ(JSライブラリを含む)はローカルなので、httpリクエストによる速度低下はありません。パフォーマンスをさらに最大化するために、すべてを1つのファイルに追加します。
約500個のデータポイントを含む4つのグラフ(線、棒、円、線/棒のコンボ)をロードしました。
私の時間測定は、htmlページの実際のロードを除外しました。レンダリングが終了するまで、チャートライブラリコードの使用を開始した瞬間からフォームを測定しました。すべてのチャートアニメーションがオフになりました。
C3は、最新のAndroidおよびIPhoneデバイスで約1500〜1800ミリ秒かかりました。 iPhoneはAndroidよりも約100ミリ秒優れています。
Chart.jsには約400〜800ミリ秒かかりました。 Androidは、iPhoneよりも約300ミリ秒優れています。
驚くことではありませんが、SVGは遅いです。ユースケースによっては、遅すぎるかもしれません。
デスクトップコンピューターでのc3のレンダリングは約150〜200ミリ秒で、charts.jsは約80〜100ミリ秒でした。 AndroidとiPhoneエミュレーターで同じテストを実行すると、デスクトップと同じ結果が得られました。したがって、モバイルデバイスの速度低下は、ハードウェア/処理の制限によるものです。
役立つことを願っています
2016年更新
一般的な経験則は次のとおりです。
d3.js
-インタラクティブな視覚化に最適
chart.js
-すばやく簡単に最適
他のいくつかのチャートライブラリ が増えているので、テストを続け、 オープンソース に貢献することを忘れないでください!