読者です 読者をやめる 読者になる 読者になる

サイエンティストとマーケターのはざま

Pythonとか広告とかデータ分析とかとか


matplotlibで2軸グラフを描画する

Python matplotlib pandas

縦軸が左右にある 2 軸グラフを作成するにはsubplotを定義したaxisともう一方の軸をtwinします。

Yahoo!より取得した電通の2015年9月の株価終値出来高の加工済みデータをプロットしてみましょう。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

#データの読み込み

data = pd.read_csv('dentu_stock.txt',delimiter='\t', index_col=0)
data

                close turnover
date
2015/9/18 6200 1049900
2015/9/17 6340 619100
2015/9/16 6320 774700
2015/9/15 6280 1202200
2015/9/14 6190 894200
2015/9/11 6270 2569400
2015/9/10 6200 1208900
2015/9/9 6310 2781900
2015/9/8 5700 1693000
2015/9/7 5690 1009400
2015/9/4 5720 1192200
2015/9/3 5910 870000
2015/9/2 5880 1179500
2015/9/1 5890 1350900

上記データを2軸グラフにプロットします。 

fig, ax1 = plt.subplots()

#x軸
s=data.index

#主軸に出来高の棒グラフ

ax1.bar(s,data['turnover'], color = 'g')

#主軸と2軸の関連づけ

ax2=ax1.twinx()

#第2軸に株価
ax2.plot(s,data['close'],'r', label = 'close')

#描画の調整
plt.rcParams['font.size'] = 8
plt.ylabel('turnover')
plt.legend()
plt.savefig('dentu_stock.png')
plt.show()

f:id:ukichang:20150922005444p:plain

 

参考

api example code: two_scales.py — Matplotlib 1.4.3 documentation

(株)電通【4324】:株式/株価 - Yahoo!ファイナンス