Web ダッシュボード・分析レポート・コーポレートサイトで「グラフをどのライブラリで描くか」は、技術選定の中でも意外と判断が分かれるところです。BI ツール (Tableau / Looker 等) を使う場面もあれば、プロダクトに直接埋め込む可視化は自前実装が必要になります。
本記事では、JavaScript 4 系統 (ECharts / Plotly.js / Chart.js / D3.js) と Python 4 系統 (matplotlib / seaborn / plotly / altair) を並べて、用途・カスタマイズ性・学習コスト・ライセンスで選び方を整理します。
1. 用途別の選び方マップ
| 用途 | 推奨ライブラリ | 理由 |
|---|---|---|
| Web ダッシュボード (本格的) | ECharts | 40 種類以上のチャート、対話性、Apache 2.0、軽量 |
| Web ダッシュボード (簡易) | Chart.js | 学習コスト最小、ファイルサイズ小、基本チャートで十分なら |
| プロダクト埋め込み (商用) | ECharts または Plotly.js | ライセンス的に商用利用無条件、機能も足りる |
| Jupyter / Streamlit のノートブック | Plotly (Python) または matplotlib + seaborn | Python data science エコシステムに統合 |
| 論文・PDF レポート | matplotlib + seaborn | 高品質な静的出力、PNG / SVG / PDF 直接生成 |
| 独自・芸術的可視化 | D3.js | SVG 直接操作の自由度、既製チャートで足りない場合のみ |
| 3D / 地理データ | ECharts または deck.gl | ECharts は 3D / 地図を標準対応、deck.gl は WebGL ベースで高性能 |
| リアルタイム更新 (株価等) | ECharts または Highcharts | アニメーション・ストリーミング更新に強い |
2. JavaScript 系の主要ライブラリ
2-1. ECharts (Apache ECharts)
- ライセンス: Apache 2.0 (商用利用無料・無条件)
- 開発元: Apache Software Foundation (元は Baidu 発)
- チャート種類: 40 種類以上 (棒・線・円・サンキー・ヒートマップ・ツリーマップ・3D・地理 etc.)
- 強み: 機能豊富 + パフォーマンス + 対話性 の三拍子。日本語ドキュメントも充実
- 弱み: API が大きく、学習に少し時間がかかる
<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 のラッパで美しい統計プロットが書ける) と組合せるのが定石
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 < D3 | altair < seaborn < matplotlib < plotly |
| ファイルサイズ | Chart.js (60KB) < ECharts (300KB) < Plotly (3MB) | (ノートブック内なので無関係) |
| カスタマイズ性 | D3 >> ECharts > Plotly > Chart.js | matplotlib > altair > plotly > seaborn |
| 3D / 地理 | ECharts (標準) > Plotly (標準) > 他は別ライブラリ | plotly > matplotlib (mpl_toolkits) |
| 論文・PDF 用途 | (JS は基本不向き) | matplotlib + seaborn が圧倒的 |
| Web 埋込み | ECharts / Chart.js が定石 | Plotly (HTML 出力) / bokeh |
5. ふくふくの推奨
Web ダッシュボード / プロダクト埋込みは ECharts が安全な第一選択。Apache 2.0 で商用利用無条件、サンキー・ヒートマップ・地理など必要な可視化はほぼカバー。「シンプルな棒グラフ・線グラフだけ」なら Chart.js も検討。完全カスタムが要る場面のみ D3。
論文・レポート・社内資料は matplotlib + seaborn。デフォルトで美しく、PNG / PDF 出力が安定。対話的に探索したい / Streamlit に埋め込みたい場合は plotly を追加。altair は宣言的に書きたい人向けの選択肢。
6. 関連記事
- 可視化図鑑シリーズ — 各グラフ種類の使い分け (棒・線・サンキー等)
- Engineering Dashboards シリーズ — 開発組織のダッシュボード構築
- 組織にデータの民主化をもたらす — Streamlit を使った非エンジニア向けの可視化共有
可視化ライブラリは選択肢が多く、案件特性によって最適解が変わります。続編では、ECharts でサンキーダイアグラムを実装する手順、Plotly で Streamlit ダッシュボードを 30 分で作る、D3 で独自インフォグラフィクスを設計する等のハンズオン編を、読者リアクションに応じて随時追加していきます。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。