matplotlibのsubplot2gridでx軸を共有する方法
subplot2gridを使用して複数のサブプロットを作成する際、sharex引数を指定することでx軸を共有できます。これにより、グラフ間でx軸の範囲や目盛りが連動し、比較しやすい図を作成できます。
x軸を共有する手順
- numpyを使ってデータ
t、x、y1、y2を作成します。 figure()メソッドで新しい図を作成します(既存の図がある場合はアクティブ化されます)。subplot2grid()でcolspan=3、rowspan=2を指定し、グリッド内の特定の位置に最初のサブプロットax1を作成します。- 同じく
colspan=3に加えてsharex=ax1を指定し、2つ目のサブプロットax2を作成します。これでax1とx軸が共有されます。 plot()メソッドでtに対するy1およびy2の曲線をそれぞれ描画します。tight_layout()などでサブプロット間・周囲の余白を調整します。show()メソッドで図を表示します。
コード例
import numpy as np from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True t = np.arange(0.0, 2.0, 0.01) x = np.sin(2 * np.pi * t) y1 = np.exp(-t) y2 = x * y1 fig = plt.figure() ax1 = plt.subplot2grid((4, 3), (0, 0), colspan=3, rowspan=2) ax2 = plt.subplot2grid((4, 3), (2, 0), colspan=3, sharex=ax1) ax1.plot(t, y1, c='red') ax2.plot(t, y2, c='orange') plt.tight_layout() plt.show()
この例では、4行3列のグリッドを想定し、上段に rowspan=2 の大きなサブプロット、下段に sharex=ax1 を持つサブプロットを配置しています。sharex=ax1 を指定することで、両方のグラフのx軸が共有され、片方を拡大・縮小するともう片方も連動して動きます。
出力結果

なお、x軸を共有した場合、重複する目盛りラベルを非表示にしたいときは、下段のグラフでのみラベルを表示する設定や label_outer() メソッドの活用も検討すると、より見やすいレイアウトになります。
-
【Python】Matplotlibのplt.show()ウィンドウを最大化する方法
概要Matplotlibでグラフを表示すると、デフォルトでは小さなウィンドウが開きます。plt.get_current_fig_manager() と mng.full_screen_toggle() の2つのメソッドを組み合わせることで、plt.show() で表示されるウィンドウを簡単に最大化(全画面表示)できます。手順subplot() メソッドを使い、現在の図にサブプロットを追加します(nrow=1、ncols=1、index=1)。リスト [1, 2, 3] を渡して pie() メソッドを呼び出し、円グラフを作成します。get_current_fig_manager() メソッドで
-
Pythonで2つのプロットを並べて作成する方法【matplotlibのsubplot活用】
matplotlibのsubplot(row, col, index)メソッドを使うと、1つの図(figure)を行数×列数の領域に分割し、指定したインデックスの位置にそれぞれグラフを描画できます。本記事では、このメソッドを利用して、1つの図の中に2つのグラフを横並びで作成する方法を解説します。 実装の手順 numpyを使って、x座標と2種類のy座標(y1、y2)のデータポイントを作成します。 nrows=1、ncols=2、index=1を指定してsubplot()メソッドを呼び出し、現在のfigureに最初のサブプロットを追加します。 plot()メソッドで、xとy1のデータを使って折れ