d3.jsとchart.jsの比較(チャートのみ)[クローズ]


88

プロジェクトでchart.jsを数回使用しましたが、d3.jsを使用したことはありません。多くの人がd3.jsがチャートに最適なjavascriptフレームワークであると言いますが、特にchart.jsとの比較が必要な場合は、その理由を説明できません。

私はこれを見つけました:http//www.fusioncharts.com/javascript-charting-comparison/ しかし、それは私が探していたものではありません。

使いやすさとパフォーマンス(グラフのみ)の観点から、これらのフレームワークの比較について知っている人はいますか?


1
楽しみのために、同じデータセットでd3.jsを使用してchart.jsの基本的なグラフを開発しています。あなたは見ることができます- s.codepen.io/bumbeishvili/debug/RGbvPg
bumbeishvili

アップデート
2018d3に

回答:


215

d3.js「チャート」ライブラリではありません。 これは、SVG / HTMLを作成および操作するためのライブラリです。データの視覚化と操作に役立つツールを提供します。これを使用して従来のグラフ(棒、線、円など)を作成できますが、それ以上の機能があります。もちろん、この「非常に多くのことができる」ことで、より急な学習曲線が生まれます。上に構築された従来のチャートライブラリがたくさんありますd3.js- 、、あなたはそのルートを移動したい場合。nvd3.jsdimple.jsdc.js

私はよく知らないChart.jsが、ウェブサイトをざっと見ると、それは製粉所のチャートライブラリの実行であることがわかる。これは、6つの基本的なグラフの種類をサポートしており、あなたは今までどうするつもりされていないもの のように 、これを しかし、APIは単純に見え、使いやすいと確信しています。

それ以外の2つの最も明白な違いは、Chart.jsキャンバスベースであるのに対しd3.js、主にSVGに関するものです。(今では主にd3.jsすべてのタイプのHTML要素を操作できるため、キャンバスへの描画に使用することもできます。)一般に、キャンバスは多数の要素に対してSVGを実行します(私は非常に大規模な話をしています-数千ポイント、ラインなどの...)。一方、SVGは、操作や操作が簡単です。SVGを使用すると、各ポイント、ラインなどがDOMの一部になります。今すぐそのポイントを緑色にしたいので、変更するだけです。キャンバスでは、変更を加えるために再描画される静的な描画です。もちろん、通常は気付かないほど高速に描画されます。これがマイクロソフトからの良い読み物です。


6
@emrah、リンクは古い可能性があります(IE9の頃)が、提供された情報は依然として非常に関連性があります。
マーク

36

モバイルデバイスでグラフを表示するための高速なグラフライブラリを見つけようとしているので、パフォーマンスは私にとって重要でした。また、商業的に使用できるようにするライセンスが必要でした。私は比較しました:

  1. c3、これはd3に基づいているため、SVGを使用します
  2. キャンバスを使用しているchart.js

グラフはネイティブアプリ内のWebViewコンポーネント内に読み込まれ、すべてのデータ(JSライブラリを含む)はローカルであるため、httpリクエストによる速度低下はありません。パフォーマンスをさらに最大化するために、すべてを1つのファイルに追加しました。

4つのグラフ(線、棒、円、線/棒の組み合わせ)を約500のデータポイントと一緒にロードしました。

私の時間測定は、htmlページの実際の読み込みを除外しました。チャートライブラリコードを使い始めてからレンダリングが終了するまでの時間を測定しました。すべてのチャートアニメーションがオフになりました。

C3は、最新のAndroidおよびiPhoneデバイスで約1500〜1800ミリ秒かかりました。iPhoneはAndroidよりも約100ミリ秒優れたパフォーマンスを示しました。

Chart.jsは約400-800msかかりました。AndroidはiPhoneよりも約300ミリ秒優れたパフォーマンスを示しました。

当然のことながら、SVGは低速です。ユースケースによっては、遅すぎるかもしれません。

デスクトップコンピューターでは、c3でのレンダリングは約150〜200ミリ秒、charts.jsは約80〜100ミリ秒でした。AndroidとiPhoneエミュレーターで同じテストを実行すると、デスクトップと同じ結果になりました。したがって、モバイルデバイスの速度低下は、ハードウェア/処理の制限によるものです。

お役に立てば幸いです



0
    chart.js
  • ピクセルに依存するhtml5キャンバスタグを使用しているため、chart.jsで生成されたグラフのサイズを変更すると、明瞭さが失われます
  • これは宣言型です。つまり、グラフを生成するために必要な入力を宣言するだけです。
  • 学習曲線が少ない
  • 生成されるチャートのタイプは事前定義されており、制限されています
    d3.js
  • 解像度に依存しないsvgを使用するため、d3で生成されたグラフのサイズを変更しても、明瞭さが失われることはありません。
  • これは必須です。つまり、チャートを生成するためのロジックを作成する必要があります。
  • 急な学習曲線
  • 生成されるグラフの種類は事前定義されておらず、任意のグラフを作成できます
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.