ふくふくHukuhuku Inc.
EP.13Toolbox 13分公開: 2026-05-10

可視化ライブラリ図鑑:ECharts / Plotly / matplotlib / D3 / Chart.js を並べて選ぶ

Web ダッシュボード・分析レポート・コーポレートサイトで「グラフをどのライブラリで描くか」は意外と判断が分かれる。ECharts / Plotly / matplotlib / D3 / Chart.js の 5 系統を、用途・カスタマイズ性・学習コスト・ライセンスで並べて選び方を整理。

#可視化#ECharts#Plotly#matplotlib#D3#JavaScript#Python
CO📔 Google Colab で開く(上から順にセルを実行)
シェア

Web ダッシュボード・分析レポート・コーポレートサイトで「グラフをどのライブラリで描くか」は、技術選定の中でも意外と判断が分かれるところです。BI ツール (Tableau / Looker 等) を使う場面もあれば、プロダクトに直接埋め込む可視化は自前実装が必要になります。

本記事では、JavaScript 4 系統 (ECharts / Plotly.js / Chart.js / D3.js) と Python 4 系統 (matplotlib / seaborn / plotly / altair) を並べて、用途・カスタマイズ性・学習コスト・ライセンスで選び方を整理します。

1. 用途別の選び方マップ

用途推奨ライブラリ理由
Web ダッシュボード (本格的)ECharts40 種類以上のチャート、対話性、Apache 2.0、軽量
Web ダッシュボード (簡易)Chart.js学習コスト最小、ファイルサイズ小、基本チャートで十分なら
プロダクト埋め込み (商用)ECharts または Plotly.jsライセンス的に商用利用無条件、機能も足りる
Jupyter / Streamlit のノートブックPlotly (Python) または matplotlib + seabornPython data science エコシステムに統合
論文・PDF レポートmatplotlib + seaborn高品質な静的出力、PNG / SVG / PDF 直接生成
独自・芸術的可視化D3.jsSVG 直接操作の自由度、既製チャートで足りない場合のみ
3D / 地理データECharts または deck.glECharts は 3D / 地図を標準対応、deck.gl は WebGL ベースで高性能
リアルタイム更新 (株価等)ECharts または Highchartsアニメーション・ストリーミング更新に強い

2. JavaScript 系の主要ライブラリ

2-1. ECharts (Apache ECharts)

  • ライセンス: Apache 2.0 (商用利用無料・無条件)
  • 開発元: Apache Software Foundation (元は Baidu 発)
  • チャート種類: 40 種類以上 (棒・線・円・サンキー・ヒートマップ・ツリーマップ・3D・地理 etc.)
  • 強み: 機能豊富 + パフォーマンス + 対話性 の三拍子。日本語ドキュメントも充実
  • 弱み: API が大きく、学習に少し時間がかかる
ECharts: 棒グラフの最小実装
HTML
<div id="chart" style="width:600px;height:400px;"></div><script src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script><script>  const chart = echarts.init(document.getElementById('chart'));  chart.setOption({    title: { text: '月次売上' },    tooltip: {},    xAxis: { data: ['1月', '2月', '3月', '4月'] },    yAxis: {},    series: [{ type: 'bar', data: [120, 150, 180, 210] }],  });</script>

2-2. Chart.js

  • ライセンス: MIT (商用利用無条件)
  • チャート種類: 8 種類程度 (棒・線・円・ドーナツ・レーダー・極座標・散布図・バブル)
  • 強み: 学習コスト最小、ファイルサイズ小、初学者向けの説明が豊富
  • 弱み: 高度な可視化 (サンキー・ツリーマップ・ヒートマップ) には別途プラグインが必要
  • 向いている: 「コーポレートサイトの簡単な数字グラフ」「管理画面の最小ダッシュボード」

2-3. Plotly.js

  • ライセンス: MIT
  • チャート種類: 30 種類以上、特に統計系・科学系が充実
  • 強み: Python / R / Julia 版と API が共通 (Jupyter エコシステムに統合)、3D / 統計プロットが豊富
  • 弱み: ファイルサイズが大きい (~3 MB)、ECharts より動作が重いケースあり
  • 向いている: data science 系の Web UI、Streamlit / Dash と組み合わせる場合

2-4. D3.js

  • ライセンス: ISC
  • 性質: チャート「ライブラリ」ではなく 可視化「ツールキット」。SVG / Canvas を直接操作する低レベル API
  • 強み: 完全自由なカスタマイズ、独自表現可能、軽量 (必要なモジュールだけ import 可)
  • 弱み: 学習コスト最大、棒グラフ 1 本書くのに数十行必要
  • 向いている: NYTimes / FT のようなインフォグラフィクス、研究機関の独自可視化

3. Python 系の主要ライブラリ

3-1. matplotlib

  • ライセンス: PSF (Python Software Foundation) — 商用利用 OK
  • 性質: Python 可視化のデファクト標準 (1998 年〜)
  • 強み: 静的高品質出力 (PNG / SVG / PDF / EPS)、論文・レポート用途で第一選択
  • 弱み: 対話性 (ズーム・ホバー) がほぼ無い、デフォルトのスタイルが古い
  • 組合せ: seaborn (matplotlib のラッパで美しい統計プロットが書ける) と組合せるのが定石
matplotlib + seaborn の最小例
Python
import matplotlib.pyplot as pltimport seaborn as snsimport pandas as pd
df = pd.DataFrame({    "month": ["1月", "2月", "3月", "4月"],    "sales": [120, 150, 180, 210],})sns.set_theme(style="whitegrid")fig, ax = plt.subplots(figsize=(8, 5))sns.barplot(data=df, x="month", y="sales", ax=ax)ax.set_title("月次売上")fig.savefig("monthly_sales.png", dpi=200, bbox_inches="tight")

3-2. plotly (Python)

  • ライセンス: MIT
  • 強み: 対話性の標準装備 (ズーム・ホバー・選択)、Jupyter / Streamlit との相性最高
  • 弱み: 静的出力 (PNG / PDF) は kaleido / orca などの追加依存が必要
  • 向いている: 探索的分析、社内ダッシュボード、Streamlit 等の Web UI

3-3. altair

  • ライセンス: BSD
  • 性質: 宣言的可視化 (Vega-Lite ベース)。「データ + マッピング」で書く文法
  • 強み: 短いコードで複雑なチャート、JSON spec 出力で他ツールから再利用可
  • 弱み: 自由度は matplotlib より低い、エコシステムは plotly に劣る
  • 向いている: Streamlit との組合せ、宣言的な書き方を好む人

3-4. bokeh

  • ライセンス: BSD
  • 強み: Web 向けの対話的可視化に特化、bokeh server で簡易ダッシュボードも作れる
  • 弱み: plotly と機能が被る、近年は plotly の方が選ばれる傾向
  • 向いている: 既存の bokeh 資産を活用したい場合

4. 選定基準の整理

基準JS で重視するものPython で重視するもの
ライセンスECharts (Apache) / Chart.js / Plotly (MIT) / D3 (ISC)matplotlib (PSF) / Plotly (MIT) / altair (BSD) — どれも商用 OK
チャート種類ECharts > Plotly > Chart.js > D3 (D3 は何でも作れるが 0 から書く)Plotly > seaborn > matplotlib > altair
学習コストChart.js < ECharts ≈ Plotly < D3altair < seaborn < matplotlib < plotly
ファイルサイズChart.js (60KB) < ECharts (300KB) < Plotly (3MB)(ノートブック内なので無関係)
カスタマイズ性D3 >> ECharts > Plotly > Chart.jsmatplotlib > altair > plotly > seaborn
3D / 地理ECharts (標準) > Plotly (標準) > 他は別ライブラリplotly > matplotlib (mpl_toolkits)
論文・PDF 用途(JS は基本不向き)matplotlib + seaborn が圧倒的
Web 埋込みECharts / Chart.js が定石Plotly (HTML 出力) / bokeh

5. ふくふくの推奨

JavaScript 系: ECharts を基本に

Web ダッシュボード / プロダクト埋込みは ECharts が安全な第一選択。Apache 2.0 で商用利用無条件、サンキー・ヒートマップ・地理など必要な可視化はほぼカバー。「シンプルな棒グラフ・線グラフだけ」なら Chart.js も検討。完全カスタムが要る場面のみ D3。

Python 系: matplotlib + seaborn を基本に

論文・レポート・社内資料は matplotlib + seaborn。デフォルトで美しく、PNG / PDF 出力が安定。対話的に探索したい / Streamlit に埋め込みたい場合は plotly を追加。altair は宣言的に書きたい人向けの選択肢。

6. 関連記事

可視化ライブラリは選択肢が多く、案件特性によって最適解が変わります。続編では、ECharts でサンキーダイアグラムを実装する手順Plotly で Streamlit ダッシュボードを 30 分で作るD3 で独自インフォグラフィクスを設計する等のハンズオン編を、読者リアクションに応じて随時追加していきます。

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp