PythonのMatplotlibでサブプロットに同じスケール(軸範囲)を設定する方法
PythonのMatplotlibで複数のサブプロットに同じスケール(軸の範囲)を設定したい場合、sharex や sharey 引数を使って軸を共有するのが最もシンプルで確実な方法です。ここでは、上下に並べた2つのサブプロットでX軸のスケールを揃える手順を解説します。
サブプロットのスケールを揃える手順
- 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を自動調整します。
- 新しいfigureを作成するか、既存のfigureをアクティブにします。
- nrows=2、ncols=1、index=1 を指定して、1つ目のサブプロット「ax1」をfigureに追加します。
- 同じく nrows=2、ncols=1、index=2 で2つ目の軸「ax2」を追加し、このとき sharex=ax1 を指定してX軸を共有します。これにより両方のサブプロットが同じX軸スケールになります。
- データポイント「t」を生成し、ax1に正弦波(サインカーブ)、ax2に余弦波(コサインカーブ)を描画します。
plt.show()メソッドを呼び出して図を表示します。
サンプルコード
import matplotlib.pyplot as plt import numpy as np # 図のサイズを設定 plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True # figureを作成 fig = plt.figure() # サブプロット(axes)を追加:ax2はax1とX軸を共有 ax1 = fig.add_subplot(2, 1, 1) ax2 = fig.add_subplot(2, 1, 2, sharex=ax1) # データポイントを作成 t = np.linspace(-5, 5, 100) # ax1にサインカーブ、ax2にコサインカーブを描画 ax1.plot(t, np.sin(2 * np.pi * t), color='red', lw=4) ax2.plot(t, np.cos(2 * np.pi * t), color='orange', lw=4) plt.show()
実行結果
上記のコードを実行すると、次のような出力が得られます。2つのサブプロットのX軸が同じ範囲(-5〜5)で揃っていることが確認できます。


補足:Y軸も揃えたい場合
X軸だけでなくY軸のスケールも揃えたい場合は、sharey=ax1 を追加するか、両方まとめて共有できる fig.add_subplot(2, 1, 2, sharex=ax1, sharey=ax1) のように指定します。また、plt.subplots(2, 1, sharex=True) を使えば、より簡潔に軸を共有したサブプロットを作成することも可能です。
-
Python Matplotlibで3Dグラフをプロットする方法を解説
PythonのMatplotlibを使えば、3次元の散布図やグラフを簡単に描画できます。この記事では、mpl_toolkits.mplot3dモジュールを利用して3Dグラフを作成する手順を、サンプルコード付きでわかりやすく解説します。 3Dグラフをプロットする基本手順 Pythonで3Dグラフを描くには、以下のステップに従います。 figure()メソッドを使って、新しい図(フィギュア)を作成するか、既存の図をアクティブにします。 Axes3Dオブジェクトを取得して、3D用の座標軸を準備します。 x、y、zそれぞれのデータポイントをリストとして定義します。 scatter3D()メソッドを使
-
PythonとMatplotlibで複数のプロットを1つの図に描画する方法
Matplotlibは、データ可視化のために広く利用されている人気のPythonパッケージです。データの可視化は非常に重要なステップです。生の数値を目で追ったり複雑な計算を実行したりしなくても、データの中で何が起きているのかを直感的に把握できるようになるからです。また、定量的な洞察を聴衆に対して効果的に伝える手段としても役立ちます。Matplotlibは、データをもとに2次元のプロットを作成するために使われます。オブジェクト指向のAPIを備えており、Pythonアプリケーションへプロットを簡単に組み込むことができます。IPythonシェル、Jupyter Notebook、Spyderなどの開