付録

Matplotlibライブラリ

Matplotlibの基本構造Figure(図全体)plt.figure()Axes(描画領域)ax.plot()表示・保存plt.show()

Matplotlibとは

MatplotlibはPythonで最も広く使われているグラフ描画ライブラリです。科学計算・データ分析の分野で標準的に使用されています。

python
import matplotlib.pyplot as pltimport matplotlib as mplimport numpy as np# スタイルの設定plt.style.use("seaborn-v0_8")  # きれいなスタイル# plt.style.use("dark_background")  # ダークテーマ

Figure と Axes

Matplotlibの基本概念:

  • Figure: グラフ全体のキャンバス
  • Axes: 個々のグラフ(座標軸)
python
import matplotlib.pyplot as pltimport numpy as np# Figure と Axes を明示的に作成fig, ax = plt.subplots(figsize=(8, 5))x = np.linspace(0, 2 * np.pi, 100)ax.plot(x, np.sin(x), label="sin(x)", color="#2196F3", linewidth=2)ax.set_xlabel("x", fontsize=12)ax.set_ylabel("y", fontsize=12)ax.set_title("sin(x)のグラフ", fontsize=14)ax.legend(fontsize=11)ax.grid(True, alpha=0.3)plt.tight_layout()plt.show()

サブプロット(複数グラフ)

python
import matplotlib.pyplot as pltimport numpy as npfig, axes = plt.subplots(2, 2, figsize=(10, 8))  # 2行2列x = np.linspace(0, 2 * np.pi, 100)# 左上axes[0, 0].plot(x, np.sin(x), "b-")axes[0, 0].set_title("sin(x)")# 右上axes[0, 1].plot(x, np.cos(x), "r-")axes[0, 1].set_title("cos(x)")# 左下axes[1, 0].plot(x, np.tan(x), "g-")axes[1, 0].set_ylim(-5, 5)axes[1, 0].set_title("tan(x)")# 右下axes[1, 1].plot(x, np.sin(x) * np.exp(-x / 10), "m-")axes[1, 1].set_title("減衰正弦波")plt.tight_layout()plt.show()

よく使うグラフの種類

python
import matplotlib.pyplot as pltimport numpy as npfig, axes = plt.subplots(1, 3, figsize=(14, 4))# パイチャートlabels = ["Python", "Java", "JavaScript", "C++", "その他"]sizes = [35, 25, 20, 12, 8]axes[0].pie(sizes, labels=labels, autopct="%1.1f%%", startangle=90)axes[0].set_title("言語シェア")# エラーバー付き折れ線x = np.linspace(0, 10, 10)y = np.sin(x)yerr = np.random.rand(10) * 0.3axes[1].errorbar(x, y, yerr=yerr, fmt="o-", capsize=5)axes[1].set_title("エラーバー付き")# 面グラフx = np.linspace(0, 5, 100)y1 = np.sin(x)y2 = np.sin(x) + 1axes[2].fill_between(x, y1, y2, alpha=0.5, color="skyblue")axes[2].plot(x, y1, "b-")axes[2].plot(x, y2, "r-")axes[2].set_title("面グラフ")plt.tight_layout()plt.show()

グラフの保存

python
import matplotlib.pyplot as pltimport numpy as npfig, ax = plt.subplots(figsize=(8, 5))x = np.linspace(0, 10, 100)ax.plot(x, np.sin(x))ax.set_title("保存するグラフ")# PNG形式で保存(高解像度)plt.savefig("graph.png", dpi=150, bbox_inches="tight")# SVG形式(ベクター形式)plt.savefig("graph.svg", bbox_inches="tight")# PDF形式plt.savefig("graph.pdf", bbox_inches="tight")plt.show()

アニメーション

python
import matplotlib.pyplot as pltimport matplotlib.animation as animationimport numpy as npfig, ax = plt.subplots(figsize=(8, 4))x = np.linspace(0, 2 * np.pi, 200)line, = ax.plot(x, np.sin(x))ax.set_ylim(-1.5, 1.5)def update(frame):    line.set_ydata(np.sin(x + frame * 0.1))    return line,ani = animation.FuncAnimation(fig, update, frames=100, interval=50, blit=True)plt.show()# ani.save("animation.gif", writer="pillow")  # GIFとして保存

練習: 複合グラフ

標準

1枚のFigureに、sin(x)\sin(x) の折れ線グラフと正規分布のヒストグラムを横並びに描いてください。