雲雀は高く空を舞い このページをアンテナに追加 RSSフィード

「ひよこは高く空を舞い」について

2009-10-10

[]matplotlib 二軸グラフを書く matplotlib 二軸グラフを書く - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - matplotlib 二軸グラフを書く - 雲雀は高く空を舞い matplotlib 二軸グラフを書く - 雲雀は高く空を舞い のブックマークコメント

2軸グラフを書くにはsubplotを一枚のグラフ上に重ねるという手法をとる。…ちょっと力技のような気もするけどまぁ…まぁ…

f:id:udzuki:20091010211253p:image:w500

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid.parasite_axes import SubplotHost

""" define data from h """
starer = [x['starernum'] for x in h]
star = [x['starnum'] for x in h]
post = [x['postnum'] for x in h]
idpost = [x['idpostnum'] for x in h]
keyword = [x['uniquekeywords'] for x in h]
starpost = [x/float(y) for x,y in zip(star,post)]
user = [x['uniqueusernum'] for x in h]

width = .3
indx = arange(24)

starpost = [x/float(y)*100 for x,y in zip(star,post)]
starerposter = [x/float(y)*100 for x,y in zip(starer, user)]
xx = ones((24,1))*100

""" preprocess of plot """
fig = plt.figure(1)
host = SubplotHost(fig, 111)
fig.add_subplot(host)
par = host.twinx()

""" prepare graph """
b1 = host.bar(indx+width*.75*0, post, width, color='r')
b2 = host.bar(indx+width*.75*1, keyword, width, color='b')

p1 = par.plot(indx, starpost, '-o',color='c',ms=5, lw=3, alpha=.7)
p2 = par.plot(indx, starerposter, '-o',color='m',ms=5, lw=3, alpha=.7)
p3 = par.plot(indx, xx,color='y')

host.set_xlabel('hour')
host.set_xticks(indx)
host.set_ylabel('posts')
host.set_title('10-09')
host.set_xlabel("Hour")
host.legend((b1[0], b2[0], p1,p2), ("post","keyword","star/post", 'star-er/post-er'), loc=0, shadow=True)
par.set_ylabel('rate (%)')

xlim(-.25,24)
# save
savefig('%d-%d Stars.png'%(mm,dd))
# 描画
fig.show()

こんな感じで。試行錯誤の初期はなんだかよく分からないけど描画できない事がちょいちょいあったんだけど、原因追及する前にそれが出なくなってしまった…なんだったんだろか…subplotについて今度調べよう。

グラフはこちらのもの

テクノラティプロフィール