Reactのグラフライブラリ比較:1つのグラフを6つのライブラリで

Reactのグラフライブラリ比較

Reactのグラフライブラリ比較:同じグラフを6つのライブラリで実測 | We.Inc

Recharts、Chart.js、Nivo、Victory、visx、EChartsのそれぞれで同じ棒グラフを作り、コピーして使えるコードと、実際に測定したバンドルサイズで比較しました。自分に合ったReactのグラフライブラリを選べます。

Reactで作るほとんどのダッシュボードでは、Rechartsがいちばん手早く始められ、Chart.jsはキャンバスに描画するぶんバンドルが小さくなります。完全に独自のデザインを最小のサイズで作るならvisx、洗練された初期設定が欲しいならNivo、React Nativeにも対応したいならVictory、非常に大規模で複雑なグラフならEChartsを選びましょう。私たちは同じグラフをそれぞれのライブラリで作り、実際にサイズを測定しました。

結論だけ知りたい方へ

以下のライブラリはすべて、同じデータから同じ6か月分の棒グラフを描いています。それぞれを単独でバンドルして結果を測定しているので、サイズの表は同じ条件で比較したものになっています。また、Rechartsの例はこのページ上で実際に動いています。

よくある質問

Reactに最適なグラフライブラリはどれですか?

用途によって変わります。一般的なダッシュボードにはRecharts、小さなバンドルで大量のデータを扱うならChart.js、オーダーメイドのデザインにはvisx、データ量の多い複雑なグラフにはEChartsが向いています。このページのサイズの表で、それぞれのコストを確認できます。

RechartsとChart.jsのどちらが優れていますか?

グラフがコンポーネントになっていて、スタイルを調整できるSVGとして描画されるため、Reactで自然に使えるのはRechartsです。Chart.jsはキャンバスに描画し、大量のデータ点をうまく処理でき、今回のテストではRechartsの半分以下のサイズでした。

これらのグラフライブラリは商用利用も無料ですか?

はい。6つともオープンソースです。Recharts、Chart.js、Nivo、Victory、visxはMITライセンス、EChartsはApache 2.0ライセンスで提供されています。

ReactのグラフライブラリはServer Componentsで使えますか?

これらのライブラリはブラウザー上で描画し、エフェクトや参照を使うため、グラフのコンポーネントには"use client"が必要です。ただし、データの取得はこれまでどおりServer Componentで行い、プロップスとして渡すことができます。

測定方法

実測したバンドルサイズ

実測値:棒グラフ1つを圧縮し、gzipした後のサイズ(Reactは含まない)

並べて比較

それぞれの違い

6つのライブラリで作る同じグラフ

すべての例で使うデータ

6か月分のWebサイトの訪問数です。以下の各ライブラリは、このデータから同じ棒グラフを描きます。

Recharts

X軸、Y軸、ツールチップ、棒といった、グラフの構成そのままに読めるコンポーネントを組み合わせて作ります。ResponsiveContainerを使うと、親要素の幅いっぱいに広がります。横に表示されている実際に動くグラフは、このコードで描いています。

Chart.jsとreact-chartjs-2

Chart.jsはツリーシェイキングに対応しているので、グラフで使う部品だけを登録します。キャンバスに描画するため、数千のデータ点があっても高速に動きますが、アクセシビリティのためのテキストは別途用意する必要があります。

Nivo

多くのプロップスと見栄えの良い初期設定を持つ、1つのコンポーネントで作ります。ResponsiveBarには、高さを指定した親要素が必要です。

Victory

組み合わせて使えるSVGのコンポーネントです。React Native向けにも同じAPI(victory-native)があるので、Webとアプリでグラフのコードを共有したい場合に便利です。

グラフライブラリというより、部品の集まりです。スケールを作り、棒を描くところまで自分で行います。コードは増えますが、すべてを自由に制御でき、今回のテストでは最も小さなバンドルになりました。

ECharts(全体のインポート)

すべてを1つのオプションオブジェクトで指定します。echarts-for-reactをインポートするとECharts全体が読み込まれるため、ここでは最も大きなバンドルになります。

ECharts(モジュール単位のインポート)

echarts/coreからインポートし、使うグラフ、コンポーネント、レンダラーだけを登録します。今回のテストでは、これでバンドルがおよそ半分になりました。

グラフを置く場所が必要ですか?こちらから始めましょう:

ダッシュボードのレイアウト

月別訪問数の棒グラフ:1月 1,200、2月 1,650、3月 1,420、4月 2,100、5月 2,480、6月 2,310

1月

3月

4月

5月

6月

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る