IT業務効率化

matplotlibで2種類のデータを1つのグラフに表示する

結論:コード

fig, ax1 = plt.subplots(figsize=(23, 10))
ax1.bar(df.index.values, df['rainfall'],
        align="center", color="royalblue", linewidth=0)
ax1.set_ylabel('rainfall(mm)', fontsize=20)
ax1.legend(['rainfll'], fontsize=20, loc=1)
ax2 = ax1.twinx()
ax2.plot(df.index.values, df['temperature'], linewidth=2, color="r")
ax2.set_ylabel('temperature(℃)', fontsize=20)
ax2.legend(["temperature(℃)"], fontsize=20, loc=2)

ax1.tick_params(axis='y', labelsize=22)
ax2.tick_params(axis='y', labelsize=22)
ax1.tick_params(axis='x', labelsize=22, labelrotation=60)

plt.show()

解説

# グラフのサイズを決める
fig, ax1 = plt.subplots(figsize=(23, 10))
# グラフのデータを渡す、x軸、y軸を最初の引数にとる
ax1.bar(df.index.values, df['rainfall'],
        align="center", color="royalblue", linewidth=0)
# y軸の持つ意味を設定する、グラフの右側に表示される
ax1.set_ylabel('rainfall(mm)', fontsize=20)
# 凡例を決める。グラフの右上で青色の線を解説しており、その部分。
ax1.legend(['rainfll'], fontsize=20, loc=1)

ax2 = ax1.twinx()
ax2.plot(df.index.values, df['temperature'], linewidth=2, color="r")
ax2.set_ylabel('temperature(℃)', fontsize=20)
ax2.legend(["temperature(℃)"], fontsize=20, loc=2)

ax1.tick_params(axis='y', labelsize=22)
ax2.tick_params(axis='y', labelsize=22)
ax1.tick_params(axis='x', labelsize=22, labelrotation=60)

plt.show()

使用したデータ

今回は気象庁の過去の天候データを利用した。

https://www.data.jma.go.jp/gmd/risk/obsdl/index.php

ABOUT ME
hirayuki
今年で社会人3年目になります。 日々体当たりで仕事を覚えています。 テーマはIT・教育です。 少しでも技術に親しんでもらえるよう、noteで4コマ漫画も書いています。 https://note.mu/hirayuki