Python
 Computer >> コンピューター >  >> プログラミング >> Python

matplotlibのsubplot2gridでx軸を共有する方法

subplot2gridを使用して複数のサブプロットを作成する際、sharex引数を指定することでx軸を共有できます。これにより、グラフ間でx軸の範囲や目盛りが連動し、比較しやすい図を作成できます。

x軸を共有する手順

  • numpyを使ってデータ txy1y2 を作成します。
  • figure() メソッドで新しい図を作成します(既存の図がある場合はアクティブ化されます)。
  • subplot2grid()colspan=3rowspan=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軸が共有され、片方を拡大・縮小するともう片方も連動して動きます。

出力結果

matplotlibのsubplot2gridでx軸を共有する方法

なお、x軸を共有した場合、重複する目盛りラベルを非表示にしたいときは、下段のグラフでのみラベルを表示する設定や label_outer() メソッドの活用も検討すると、より見やすいレイアウトになります。

  1. 【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() メソッドで

  2. 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のデータを使って折れ