2.

Matplotlib

編集

本稿は Python の Matplotlib に関する記事です。

子ページから Matplotlib に関する項目を選択してください。

本ページの子ページ

Matplotlib とは?

Matplotlib は、Python でグラフ描画を行うためのデファクトスタンダードな外部ライブラリです。線グラフ・棒グラフ・円グラフ・散布図・ヒートマップ・3Dプロットなど、データ分析・科学計算で必要なほぼすべての可視化に対応しており、NumPy や pandas、scikit-learn と組み合わせて広く使われています。

主な特徴

  • 豊富なグラフ種 — 線・棒・円・ヒストグラム・散布図・ヒートマップ・3D・等高線
  • 細かいカスタマイズ — タイトル・軸・凡例・色・線種・マーカー・フォント
  • NumPy / pandas との親和性 — pandas の DataFrame.plot() は内部で Matplotlib を使う
  • 複数バックエンド対応 — GUI 表示・PNG / PDF / SVG 出力
  • Jupyter / IPython 連携%matplotlib inline でノートブック内表示
  • 2 つの APIpyplot (MATLAB ライク) とオブジェクト指向 (推奨)

インストールと最小例

pip install matplotlib

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 4, 1, 5, 3]

plt.plot(x, y)
plt.title("Sample")
plt.xlabel("x")
plt.ylabel("y")
plt.grid(True)
plt.show()

pyplot API とオブジェクト指向 API

API特徴使いどころ
matplotlib.pyplot (関数形式)MATLAB ライク。plt.plot() / plt.title() を順に呼ぶサクッと書く
オブジェクト指向 (fig, ax = plt.subplots())ax.plot() / ax.set_title()明示的に Axes を操作サブプロット・複数図・本格的可視化 (推奨)

fig, ax = plt.subplots(figsize=(8, 4))
ax.plot(x, y, marker="o", color="tab:blue", label="A")
ax.set(title="Sample", xlabel="x", ylabel="y")
ax.legend()
ax.grid(True)
fig.tight_layout()
fig.savefig("out.png", dpi=150)
plt.show()

代表的なグラフ関数

関数用途
plot線グラフ
bar / barh棒グラフ (縦/横)
pie円グラフ
scatter散布図
histヒストグラム
boxplot箱ひげ図
imshow画像・ヒートマップ
contour / contourf等高線
quiverベクトル場
errorbar誤差棒付き
stackplot積み上げグラフ
fill_between区間塗りつぶし
subplots複数グラフ配置

装飾の主なポイント

  • タイトル・軸ラベル: set_title / set_xlabel / set_ylabel
  • 凡例: label=... + ax.legend()
  • : color="red" / "tab:blue" / HEX "#1f77b4"
  • マーカー: marker="o" / "x" / "s"
  • 線種: linestyle="--" / ":"
  • グリッド: ax.grid(True)
  • 日本語フォント: matplotlib 自体は日本語を表示できるが、フォント設定が必要 (japanize-matplotlib 等)
  • 図サイズ・DPI: figsize=(幅, 高) インチ、dpi=150

関連ライブラリ

ライブラリ位置づけ
NumPy数値配列の土台 (NumPy)
pandas表データ。DataFrame.plot() で Matplotlib に流す
seabornMatplotlib をラップした統計向け高レベル API
plotly / bokehインタラクティブな Web 表示
japanize-matplotlib日本語フォント設定を 1 行で

注意点

  • サーバ環境では GUI バックエンドが無いと plt.show() がエラー。matplotlib.use("Agg") + savefig を使う
  • 日本語の豆腐化はフォント未指定。plt.rcParams["font.family"] = "Meiryo" 等で対処
  • 多数のプロットを作る場合はplt.close(fig) でメモリ解放
  • Jupyter で表示が出ない場合は %matplotlib inline%matplotlib widget
  • pyplot の状態保持型 API は関数間で図が引き継がれるため、複雑な処理では OO API を推奨

関連

編集
Post Share
子ページ
  1. 線グラフ
  2. 棒グラフ
  3. 円グラフ
  4. 散布図
  5. タイトルと軸のラベル
  6. グリッド線
同階層のページ
  1. NumPy
  2. Matplotlib