matplotlibのあれこれ
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

matplotlibのあれこれ

2015-09-12 15:38
    matplotlibの使い方について公式のドキュメント等を参考にしながらまとめていく。
    随時更新していくつもりなので見とけよ見とけよ〜

    ※個人的にオブジェクト指向な使い方の方が何をいじくってるのかわかりやすいと思いのでそっちを採用するよ。

    目次

    まずはグラフを描こう

    兎にも角にもまずはimport。import matplotlib.pyplot as plt とする。オブジェクト指向的なグラフ作りの慣例に従うと、plt.figure()でfigureインスタンスを作成し、axesインスタンスを作ったのちグラフを埋め込む、という手順だ。
    一個一個見ていこう。

    fig = plt.figure()

    このようにするとfigureインスタンスが作成され、plt.show()とかってすると
    図1-1
    となる。これが一番下層のレイヤーに相当するわけだ。
    ちなみに plt.figure(figsize=(5,5)) とかってするとfigureの大きさが指定できて、
    図1-2
    となる。さっきと違って正方形になってるのが分かるだろう。

    次に今作ったfigureインスタンスにaxesインスタンスを加えていく。

    ax = fig.add_subplot(1,1,1)

    とすると一つのaxesを追加する。多分これが一番簡単だと思います。
    図1-3
    x軸y軸と白背景を持ったグラフの描画エリアが出てきた。

    後はこのaxesにデータを渡してやれば、グラフとして描画してくれるわけだ。
    図1-4
    図1-4のsource
    import matplotlib.pyplot as plt
    fig = plt.figure()
    ax = fig.add_subplot(1,1,1)
    ax.plot([0,1,2,3,4,5],[0,1,4,9,16,25])
    plt.show()
    plt.close()

    グラフ描画領域の設定

    先の例ではaxesは1つだけだったが、matplotlibには(当然というべきか)複数のaxesインスタンスをfigureにまとめる機能がある。方法としていくつかあるので、1つ1つ見ていこう。
    方法1:add_subplot
    fig.add_subplot(1,1,1)等とすればaxesを追加できる。()の中に入れる数字は順に行数・列数・インデックスとなっている。
    図2-1
    図2-1のsource
    fig = plt.figure()
    ax1 = fig.add_subplot(2,3,1)
    ax2 = fig.add_subplot(2,3,2)
    ax3 = fig.add_subplot(2,3,3)
    ax4 = fig.add_subplot(2,3,4)
    ax5 = fig.add_subplot(2,3,5)
    ax6 = fig.add_subplot(2,3,6)
    方法2:GridSpec
    GridSpecを使えば、add_subplotよりは自由度高くaxesを配置できる。
    図2-2
    図2-2のsource
    import matplotlib.gridspec as gridspec
    fig = plt.figure()
    gs = gridspec.GridSpec(3,3)
    ax1 = fig.add_subplot(gs[0,0])
    ax2 = fig.add_subplot(gs[0,1:])
    ax3 = fig.add_subplot(gs[1:,0])
    ax4 = fig.add_subplot(gs[1:,1])
    ax5 = fig.add_subplot(gs[1,2])
    ax6 = fig.add_subplot(gs[2,2])
    方法3:add_axes
    add_axesがaxesの配置方法としては一番自由度高い(のかなぁ)。add_axes([0,0,1,1])等とするが、()の中の数字は順に、左下のx座標、左下のy座標、横の長さ、縦の長さを表す。その数字は0~1の範囲で、1はfigure領域の最大値を示している。
    図2-3
    図2-3のsource
    fig = plt.figure()
    ax1 = fig.add_axes([0.1,0.1,0.8,0.8])
    ax2 = fig.add_axes([0.6,0.6,0.2,0.2])

    状況に応じてこの3つを使いわけよう。
    他にも方法あるかもだけどこれ以外知らない
    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。