twinx で2つの y 軸
ax.twinx で作る2つ目の y 軸を使い、単位の違う2つの量を1つのグラフに描きます。
はじめに
ミリ単位の降水量と度単位の気温は同じスケールを共有できません。1つの軸に描くと、どちらかが平らに見えてしまいます。ax.twinx は x 軸を共有し、右側に独自の y 軸を持つ2つ目の Axes を作ります。
ax1 は左の y 軸で降水量の棒を描きます。ax2 = ax1.twinx() は月を共有しつつ、右側に気温用の新しい y 軸を持ちます。各軸のラベルをデータと同じ色にすると、どの軸がどの系列のものかがわかります。2つの軸は控えめに使いましょう。2つの系列の比較を読み違えやすくなります。
インタラクティブ ビジュアライザー
2つ目の y 軸をオフにすると理由がわかります。共通のスケールでは気温の線が下のほうでつぶれてしまいます。
実行できる Matplotlib の例
Matplotlib
main.py
import matplotlib.pyplot as plt
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
temperature = [3, 5, 9, 14, 18, 22, 25, 24, 20, 14, 8, 4]
rain = [60, 50, 55, 45, 60, 70, 80, 85, 60, 75, 80, 70]
fig, ax1 = plt.subplots(figsize=(7, 4))
ax1.bar(months, rain, color="tab:blue", alpha=0.4)
ax1.set_ylabel("Rain (mm)", color="tab:blue")
ax2 = ax1.twinx()
ax2.plot(months, temperature, color="tab:red", marker="o")
ax2.set_ylabel("Temperature (°C)", color="tab:red")
ax1.set_title("Climate in one chart")
plt.show()
