Matplotlibで複数のX軸・Y軸をプロットする方法(twinx / twinyの使い方)
データ分析や可視化では、スケールの異なる2つのデータ系列を同じグラフ上に重ねて表示したいケースがよくあります。Matplotlibでは、twinx() メソッドや twiny() メソッドを使うことで、X軸またはY軸を共有しながら独立したもう一方の軸を持つグラフを簡単に作成できます。
この記事では、左右に異なるY軸を持つグラフを作成する手順を、具体的なコード例とともに解説します。
複数のY軸を持つグラフの作成手順
以下の手順で、左と右に別々のY軸スケールを持つプロットを作成できます。
subplots() メソッドを使用して、図(figure)とサブプロット(axes)を作成します。
最初のデータ [1, 2, 3, 4, 5] を、左側のY軸スケールに対して赤色でプロットします。
twinx() メソッドを使用して、X軸を共有しつつY軸が独立した新しいAxesオブジェクト(ax2)を作成します。
2つ目のデータ [11, 12, 31, 41, 15] を、右側のY軸スケールに対して青色でプロットします。
tight_layout() メソッドを使用して、サブプロット間および周囲の余白を自動的に調整し、ラベルなどが重ならないようにします。
show() メソッドを呼び出して、図を画面に表示します。
サンプルコード
import matplotlib.pyplot as plt # 図のサイズとレイアウトの自動調整を設定 plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True # 図と最初のAxesを作成 fig, ax1 = plt.subplots() # 左側のY軸に対してデータをプロット(赤色) ax1.plot([1, 2, 3, 4, 5], color='red') # X軸を共有する2つ目のAxesを作成 tax2 = ax1.twinx() # 右側のY軸に対してデータをプロット(青色) ax2.plot([11, 12, 31, 41, 15], color='blue') fig.tight_layout() plt.show()
実行結果
このコードを実行すると、同じX軸を共有しながら、左側には赤色のデータ系列、右側には青色のデータ系列に対応した2つのY軸が表示されたグラフが出力されます。これにより、単位やスケールが異なる2つのデータを1つの図で比較できるようになります。
補足:X軸を複数にしたい場合
同様に、上下に異なるX軸を持ちたい場合は twiny() メソッドを使用します。使い方は twinx() とほぼ同じで、Y軸を共有しながら独立したX軸を持つAxesを作成できます。
ax2 = ax1.twiny() # Y軸を共有し、X軸が独立したAxesを作成
また、各軸にラベルを付けたい場合は、set_xlabel() や set_ylabel() を使うことで、どちらの軸がどのデータに対応しているかを明示でき、より読みやすいグラフになります。
-
matplotlibのFuncAnimationを使ってPythonで等高線図をアニメーション化する方法
Pythonのmatplotlibでは、FuncAnimationクラスを利用することで、等高線図(コンタープロット)を簡単にアニメーション化できます。時間とともに変化するデータを視覚的に表現したい場合に非常に便利な手法です。 等高線図をアニメーション化する手順 10×10×8の形状を持つランダムなデータを作成します。 subplots()メソッドを使って、図(Figure)とサブプロット(Axes)を作成します。 FuncAnimation()クラスを使い、指定した関数*func*を繰り返し呼び出すことでアニメーションを生成します。 フレームごとに等高線の値を更新できるよう、animat
-
MatplotlibでグラフのX軸とY軸を入れ替える方法
Matplotlibでグラフの軸(X軸とY軸)を入れ替えたい場合、subplots()メソッドを使って図(figure)を作成し、2つのサブプロットを追加する方法が便利です。1つ目のサブプロットに曲線を描画し、そのX・Yデータを抽出して、2つ目のサブプロットの曲線に設定し直すことで、軸を入れ替えたグラフを作成できます。 手順 NumPyを使って、xとyのデータポイントを作成します。 図を作成し、2つのサブプロットを追加します。 両方のサブプロットにタイトルを設定します。 plot()メソッドを使って、xとyのデータポイントをプロットします。 get_xdata()とget_ydata()を使