« ブラウザーのタブに置いて置けるタイマー timer-tab.com | トップページ | 駆け込みでWindows8買ってみた。 »

2013年1月18日 (金)

matplotlibで自由自在にsubplotする。

MATLABではsubplot(1.5,1,1)とかやるとfigureの2/3を占めるようなsubplotを作ることができて、便利だったんだけどmatplotlibでどうやるのかいつも気になっていたのですが、今日とうとうやり方を発見。Scipy lecture notessubplotの項 に、あった。
gridspecというのがあって、これでグリッドを作る。
import matplotlib.gridspec as gridspec
pl.figure(figsize=(6, 4))
G = gridspec.GridSpec(3, 3)
で、axisを指定するときに
axes_3 = pl.subplot(G[1:, -1])
のようにしてグリッドをnumpy arrayをスライスする感じで指定するらしい。非常にエレガントな方法。MATLABで小数点絡んだやり方は非常に混乱したのを覚えている。
横に長いプロットを2つに縦長を1つをpylabの例でやります。
from pylab import *

toy_data = np.random.rand(100)

G = gridspec.GridSpec(2,3)

subplot(G[0,:2])
plot(toy_data)

subplot(G[1,:2])
plot(toy_data ** 2, 'r')

subplot(G[:,2])
bar(0.6, np.mean(toy_data ** 2), facecolor='none')
xlim([0,2])

Plot

できました!バーグラフのY軸がめり込んでいるのはpylabならtight_layout()で一発でレイアウトが自動で最適化されます。
それにしてもこのScipy lecture notesは他にも非常に充実していて、あとできっちり読んだほうが良さそう。色々と評判がよいscikit-learnまでカバーしてあるのが嬉しい。

« ブラウザーのタブに置いて置けるタイマー timer-tab.com | トップページ | 駆け込みでWindows8買ってみた。 »

学問・資格」カテゴリの記事

Python」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: matplotlibで自由自在にsubplotする。:

« ブラウザーのタブに置いて置けるタイマー timer-tab.com | トップページ | 駆け込みでWindows8買ってみた。 »

しろののツイッタータイムライン(凍結中)

オススメたち

2021年7月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

はてブ

無料ブログはココログ