Pythonを使った2軸グラフの作成 その2 Matplotlib 入門講座 09_02

Python
この記事は約6分で読めます。

Pythonを使った2軸グラフの作成方法

前回の記事の続きです。
前回の記事はこちらです。

今回の講義ではサンプルデータが必要です。
kino-codeさんのホームページにデータがあります。
Matplotlib-Seaborn09-1month_data.csv
Matplotlib-Seaborn09-kion_data.csv

前回の講義で作成したグラフがこちら。
売り上げ金額と数量で2軸グラフが作成できてます。

fig, ax1 = plt.subplots()

ax1.bar(x, volume, color='darkcyan')

ax2 = ax1.twinx()
ax2.plot(x, price, color='red')

plt.show()

ここからグラフのサイズを変更します。
subplotsメソッドの()の中で、引数figsizeを設定します

さらに軸ラベル、タイトルを追加します。
日本語を表示させるためのjapanize matplotlibをインポートします。
続いて、axisのsetメソッドのylabelで軸ラベルを追加します。
axドット、setアンダースコアylabelと記述します。

ax2の、priceにも同様の記述をします。

import japanize_matplotlib

fig, ax1 = plt.subplots(figsize=(9,6))

ax1.bar(x, volume, color='darkcyan')
ax1.set_ylabel('数量(個)', fontsize=14)

ax2 = ax1.twinx()
ax2.plot(x, price, color='red')
ax2.set_ylabel('売上金額(円)', fontsize=14)

plt.title('東京/売上金額', fontsize=16)
plt.show()


このままだと日付の部分が見にくいので変更します。
matplotlibのdatesdtという名前でインポートします。
datesを使うことで、時系列グラフのx軸の表示を
自由に変更することができます。

そして、axis setメソッドの、major formatterと記述した()の中に、
インポートしたdatesの省略名dt、ドット、DateFoematterと記述します。
ここではax2に記述をしていますが、ax1でも同じように表示されます。
さらに()の中で、x軸ラベルの表示形式を設定できます。
パーセントの後に、小文字のm、スラッシュを挟んで、dを指定してみます。
ちなみに、mはmonth、dはdayの頭文字です。

import matplotlib.dates as dt

fig, ax1 = plt.subplots(figsize=(9,6))

ax1.bar(x, volume, color='darkcyan')
ax1.set_ylabel('数量(個)', fontsize=14)

ax2 = ax1.twinx()
ax2.plot(x, price, color='red')
ax2.set_ylabel('売上金額(円)', fontsize=14)

ax2.xaxis.set_major_formatter(dt.DateFormatter('%m/%d'))

plt.title('1月 東京/売上金額', fontsize=15)
plt.show()

 axis setメソッドのmajor locatorを使って、
指定した間隔で日付ラベルを表示させてみます。

DayLocatorと記述した()の中の、引数intervalで間隔を指定できます。
ここでは1週間ごとの7を設定してみましょう。

1週間ごとで日付のラベルが表示されました。
このように、matplotlibのdatesというライブラリを使うことで、
時系列グラフのx軸ラベルを自由に変更できます。

fig, ax1 = plt.subplots(figsize=(9,6))

ax1.bar(x, volume, color='darkcyan')
ax1.set_ylabel('数量(個)', fontsize=14)

ax2 = ax1.twinx()
ax2.plot(x, price, color='red')
ax2.set_ylabel('売上金額(円)', fontsize=14)

ax2.xaxis.set_major_locator(dt.DayLocator(interval=7))

plt.title('1月 東京/売上金額', fontsize=15)
plt.show()

今回もkinocodeさんの動画で勉強させていただきました。
ありがとうございました!

コメント

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