みなさん、こんにちは。
今回はmatplotlibを使って複合グラフを作成する方法を紹介します
作成するグラフ
気象庁の気象データのサイトから東京の2021年8月の降水量と最高気温を使って下記の複合グラフを作成します。
グラフの趣旨は下記になります。
- 最高気温は折れ線グラフ、降水量はバーグラフで表示
- 最高気温は赤、降水量は青で表示
- 各Y軸の色付け
- 折れ線グラフとバーグラフは被らないようにする
- グリッド線の表示
- matplotlibでの日本語表記
必要なライブラリ
今回使用するライブラリは、pandas、matplotlibになります。
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ボタンで記事のシェアをしていただけると嬉しいです!
コメント