Matplotlib でセカンダリ Y 軸に Y 軸ラベルを追加する方法
Suraj Joshi
2023年1月30日
axes
オブジェクトを直接操作するか、DataFrame.plot
メソッドを使用して、Matplotlib の 2 番目の y 軸に y 軸ラベルを追加できます。
axes
オブジェクトとの直接の相互作用
twinx()
関数を利用して 2つの異なる axes
オブジェクトを使用することで、2つの異なる y 軸でプロットを作成できます。これで、2 番目の axes
オブジェクトを使用して、2 番目の y 軸変数のプロットを作成し、そのラベルを更新できます。
import numpy as np
import matplotlib.pyplot as plt
a = np.linspace(0, 5, 100)
y1 = np.sin(2 * np.pi * a)
y2 = np.cos(2 * np.pi * a)
fig, ax1 = plt.subplots()
ax1.set_xlabel("time (s)")
ax1.set_ylabel("sin", color="red")
ax1.plot(a, y1, color=color)
ax1.tick_params(axis="y", labelcolor=color)
ax2 = ax1.twinx()
ax2.set_ylabel("cos", color="green")
ax2.plot(a, y2, color=color)
ax2.tick_params(axis="y", labelcolor=color)
fig.tight_layout()
plt.show()
出力:
ax2 = ax1.twinx()
Axes.twinx()
は、元の軸と反対の y 軸を持つこの新しい Axes
を作成します。この例では ax1
です。
2 番目の y 軸に y 軸ラベルを追加する DataFrame.plot
メソッド
pandas
を使用して、2 番目の y 軸に y 軸ラベルを追加することもできます。DataFrame.plot
メソッドで secondary_y
オプションを True
に設定すると、ラベルの設定に使用できるさまざまな軸が返されます。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(
{
"Age": [22, 12, 18, 25, 30],
"Height": [155, 129, 138, 164, 145],
"Weight": [60, 40, 45, 55, 60],
}
)
ax = df.plot(kind="line", x="Age", y="Height", color="DarkBlue")
ax2 = df.plot(kind="line", x="Age", y="Weight", secondary_y=True, color="Red", ax=ax)
ax.set_ylabel("Height")
ax2.set_ylabel("Weight")
plt.tight_layout()
plt.show()
出力:
著者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn