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

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

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

matplotlibとSeabornの独学の為に
今回もkino-code.comさんのYouTube動画にお世話になります。

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

今回の講義では2軸グラフの作成方法について学びます。
2つの異なるデータを1枚のグラフにプロットし、
左のy軸には1つ目のデータのラベル、
右側のy軸には2つ目のデータのラベル
を表示させたグラフのことらしいです。
具体的には
売上金額と売上比率
気温と湿度
を同時に表示させいたい時などに使うようです。
まずはライブラリをインポート。

そしてkino-codeさんで予め用意されていたデータを読み込みます。
今回もGooglecolaboを使用していますので、
同じフォルダーにデータをアップロードしてマウントして使用します。

売上日の列をindexにするために、
index_col='売上日', と記述します。

時系列データを扱うにはindexを日付型に変更する必要があります。
parse_datesという引数をTrueとします。

import matplotlib.pyplot as plt
%matplotlib inline
import pandas as pd

from google.colab import drive
drive.mount('/content/drive')

data = pd.read_csv('/*****/*****/*****/*****/Matplotlib-Seaborn09-1month_data.csv', index_col='売上日', parse_dates=True)
data.head()

プロットする為に、変数にデータのインデックスやカラムを代入します。
xには、日付型のインデックスに設定した売上日の列を代入します。
volumeには、数量の列を、priceには売上金額の列を代入します。

この状態で一旦プロットしてみます。

x = data.index
volume = data['数量(個)']
price = data['売上金額(円)']

plt.bar(x, volume, color='darkcyan')
plt.plot(x, price, color='red')

plt.title('volume/price')
plt.show()

2軸設定をせずに2つのデータをプロットすると
売り上げ数量と売り上げ金額があまりにも違うため、
売れ数のグラフが見えません。

2軸グラフを作成するには
matplotlibの中のtwinxというメソッドを使います。
twinxメソッドを使用するには、まずaxisオブジェクトを生成します。
さらに、axisオブジェクトを生成するには、
その土台となるfigureオブジェクトが必要です。
従って、subplotsメソットでfigureオブジェクトと
axisオブジェクトを同時に生成する記述をします。
また、volumeの棒グラフをax1priceの線グラフをax2とします。
ax2に、ax1ドットtwinx丸括弧を代入することで、ax2を第2軸にプロットさせることができます。

fig, ax1 = plt.subplots()

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

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

plt.show()

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

コメント

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