【第52回PYTHON講座】matplotlibで複合グラフ作成

PYTHON

みなさん、こんにちは。
今回はmatplotlibを使って複合グラフを作成する方法を紹介します

作成するグラフ

気象庁の気象データのサイトから東京の2021年8月の降水量と最高気温を使って下記の複合グラフを作成します。

グラフの趣旨は下記になります。

  • 最高気温は折れ線グラフ、降水量はバーグラフで表示
  • 最高気温は赤、降水量は青で表示
  • 各Y軸の色付け
  • 折れ線グラフとバーグラフは被らないようにする
  • グリッド線の表示
  • matplotlibでの日本語表記

必要なライブラリ

今回使用するライブラリは、pandasmatplotlibになります。

pandasはデータの読み込むに使用します。

matplotlibはグラフ作成に使用します。

インストールされてない方は、下記のコマンドを実行してインストールして下さい。

pip install pandas
pip install matplotlib

使用するデータ

先述したように、気象庁の気象データのサイトから東京の2021年8月の降水量と最高気温を使って下記の複合グラフを作成します。

そこから下記のように日付、降水量、最高気温のデータを抜き出し、表計算のファイルにデータを入力します。実際に使用したデータはここからダウンロードできます。

プログラムコード

import pandas as pd
import matplotlib.pyplot as plt

file = "C:/Labo/東京気象202108.ods
df = pd.read_excel(file, engine="odf")

date = df['日']
preci = df['降水量']
hightemp = df['最高気温']

fig, ax = plt.subplots()
ax2 = ax.twinx()

ax.plot(date, hightemp, color="red")
ax2.bar(date,  preci,  color="blue")

ax.set_title('東京', fontname="MS Gothic")
ax.set_xlabel('日付', fontname="MS Gothic")
ax.set_ylabel('温度', color='red', fontname="MS Gothic")
ax2.set_ylabel('降水量', color='blue', fontname="MS Gothic")

ax.tick_params(axis='y', colors='red')
ax2.tick_params(axis='y', colors='blue')

ax.set_ylim([-20, 40])
ax2.set_ylim([0, 300])

plt.grid()

plt.show()
1、2行目 ライブラリをインポート
4、5行目 データファイルの定義、読み込み

ODSファイルはLibre Calcの表計算ファイルになるので、読み込みの際に engine=”odf” のオプションを付けます。エクセルファイルの場合は、必要ありません。

7~9行目 データの抜き出し

各列にヘッダーを記入しているので、それを元に各列を読み込みます。

11、12行目 グラフの設定、もう一つのY軸の設定
fig, ax = plt.subplots()
ax2 = ax.twinx()

ax はグラフ左側のY軸ax2はグラフ右側のY軸になります。

14、15行目 グラフのプロット
ax.plot(date, hightemp, color="red")
ax2.bar(date,  preci,  color="blue")

折れ線グラフの場合は plotバーグラフの場合は bar になります。

括弧の中は(X軸要素、Y軸要素、グラフの色)という並びになります。

17~20行目 ラベルの設定
ax.set_title('東京', fontname="MS Gothic")
ax.set_xlabel('日付', fontname="MS Gothic")
ax.set_ylabel('温度', color='red', fontname="MS Gothic")
ax2.set_ylabel('降水量', color='blue', fontname="MS Gothic")
  • title:グラフ全体のタイトル
  • xlabel:X軸のタイトル
  • ax ylabel:左側のY軸のタイトル
  • ax2 ylabel:右側のY軸のタイトル

ラベルの色は color を設定することで変更することが出来ます。

通常の設定では日本語表示は出来ません。その為、 日本語表示にするために fontname=”MS Gothic” とし、フォントを設定します。

22、23行目 Y軸の色の設定

左右のY軸それぞれに色を設定します。

ax.tick_params(axis='y', colors='red')
ax2.tick_params(axis='y', colors='blue')
25、26行目 Y軸の最小値、最大値を設定

最高気温と降水量のグラフを重複させないように、Y軸の最小値、最大値を設定します。

ax.set_ylim([-20, 40])
ax2.set_ylim([0, 300])
28行目 グリッド線の表示
30行目 グラフの表示

まとめ

いかだったでしょうか。

Y軸の色、日本語表記、Y軸の範囲を変更にすることによって、よりグラフが分かりやすくなったのではないでしょうか。

ネットやテレビの天気予報で表示される降水量のグラフなども参照にして、表示の分かりやすさを研究してみるのもいいと思います。是非試してみて下さいね。

役に立った!」と思れましたら、下のSNSボタンで記事のシェアをしていただけると嬉しいです!

コメント

タイトルとURLをコピーしました