2012年6月30日土曜日

matplotlib その2 (複数のプロット)

matplotlib で複数のグラフを表示する。

1つのウィンドウに2つのグラフを表示する場合
from matplotlib.pyplot import figure, show
import numpy as np
from numpy.random import rand

def main():
    fig = figure()
    ax1 = fig.add_subplot(211)
    ax1.plot(rand(10))
    ax1.set_yticks(np.arange(0, 1.1, 0.1))

    ax2 = fig.add_subplot(212)
    ax2.plot(rand(10), 'o')
    show()

if __name__ == "__main__":
    main()


2つのウィンドウにそれぞれプロットするときは
    fig = figure()

    ax1 = fig.add_subplot(111)
    ax1.plot(rand(10))
    ax1.set_yticks(np.arange(0, 1.1, 0.1))

    fig = figure()
    ax2 = fig.add_subplot(111)
    ax2.plot(rand(10), 'o')
    show()





fig2としなくても描画はできるようだ。
試しにfig=figure()を2回読んだときのfigの中身を調べてみたら
numberとかいうのがあって、それが2になっていた。
以下参考までに
>>> fig = figure()
>>> fig = figure()
>>> fig.__dict__
{'_agg_filter': None,
 '_alpha': None,
 '_animated': False,
 '_axobservers': [],
 '_axstack': ,
 '_cachedRenderer': None,
 '_clipon': True,
 '_clippath': None,
 '_contains': None,
 '_dpi': 80,
 '_gid': None,
 '_hold': True,
 '_label': '',
 '_lod': False,
 '_oid': 0,
 '_picker': None,
 '_propobservers': {},
 '_rasterized': None,
 '_remove_method': None,
 '_snap': None,
 '_transform': None,
 '_transformSet': False,
 '_url': None,
 '_visible': True,
 'artists': [],
 'bbox': TransformedBbox(Bbox(array([[ 0.,  0.],
       [ 8.,  6.]])), Affine2D(array([[ 80.,   0.,   0.],
       [  0.,  80.,   0.],
       [  0.,   0.,   1.]]))),
 'bbox_inches': Bbox(array([[ 0.,  0.],
       [ 8.,  6.]])),
 'callbacks': ,
 'canvas': ,
 'clipbox': None,
 'dpi_scale_trans': Affine2D(array([[ 80.,   0.,   0.],
       [  0.,  80.,   0.],
       [  0.,   0.,   1.]])),
 'eventson': False,
 'figure': None,
 'figurePatch': ,
 'frameon': True,
 'images': [],
 'legends': [],
 'lines': [],
 'number': 2,
 'patch': ,
 'patches': [],
 'show':  at 0x03A35730>,
 'subplotpars': ,
 'suppressComposite': None,
 'texts': [],
 'transFigure': BboxTransformTo(TransformedBbox(Bbox(array([[ 0.,  0.],
       [ 8.,  6.]])), Affine2D(array([[ 80.,   0.,   0.],
       [  0.,  80.,   0.],
       [  0.,   0.,   1.]])))),
 'x_isdata': True,
 'y_isdata': True}


0 件のコメント:

コメントを投稿