Matplotlib でセカンダリ Y 軸に Y 軸ラベルを追加する方法

Suraj Joshi 2023年1月30日 2020年6月12日
  1. axes オブジェクトとの直接の相互作用
  2. 2 番目の y 軸に y 軸ラベルを追加する DataFrame.plot メソッド
Matplotlib でセカンダリ Y 軸に Y 軸ラベルを追加する方法

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()

出力:

軸と直接対話して、2 番目の y 軸オブジェクトに y 軸ラベルを追加する

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()

出力:

DataFrame.plot メソッドは、2 番目の y 軸に y 軸ラベルを追加する

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

関連記事 - Matplotlib Axes