matplotlib の figure(図) と axes(座標軸)-python

python の matplotlib でグラフを描くのは非常に簡単です。とくに、グラフが 1 つだけの場合は

と、わずかな記述だけで描画が実行されます。

plot_1

グラフが複数の場合は少しだけ考慮が必要になるので、それを順に見ていきます。

- 目次 -

スポンサーリンク

複数のグラフ

複数のグラフを描く場合figureaxesという概念が出てきます。figure は図全体、axes はその内部に用意される座標軸です。

fig4

figure – axes

実際にグラフを 2 つ描く場合は

  • figureを 1 つ用意し、その中にaxesを 2 つ作成するケース
  • figureを 2 つ用意し、その中にaxesを 1 つづつ作成するケース

が考えられます。

fig2


それぞれのサンプルはこうなります。

figure を 1 つ

figure を 2 つ

figure メソッドで figure を作成、subplot メソッドで axes を作成しています(subplot メソッドについては後述します)。

描画は以下のようになります。

plot_win_1
plot_win_2

ファイルへの保存は figure 単位

保存はsavefigメソッドで行いますが

figure 単位で保存されるので、1 ファイルにまとめたければ前者、グラフごとにわけて保存したければ後者になります。


~~~
では、ここからは figure を 1 つにして、内部に複数のグラフを描く方法を詳しく見ていきます。

subplot

グリッド上にグラフを配置

グリッド上に規則正しくグラフを配置する場合はsubplotメソッドを使います。

行数 × 列数 のグリッドに figure が分割され、プロット番号の位置に座標軸が作成されます。
プロット番号は、左上が 1 で、右方向、下方向へいくにしたがい値が大きくなります。たとえば、2 × 2 のグリッドの場合は

1 2
3 4

となります。

plt.subplot(2,2,1) は カンマを省いて plt.subplot(221) と書くこともできます。ただし、プロット番号が 10 以上の場合は、カンマが必須です。

下記のとおり描画されます。

subplot4

別の書き方

上記サンプルは、以下のような書き方もできます。結果は同じになります。

座標を先に確保

figure に add_subplot

axes

自由にグラフを配置

自由にグラフを配置する場合axesメソッドを使います。

各値を 0 から 1 の小数で指定します。

描画はこうなります。
axes4

gridspec

グリッド上に変則配置

GridSpecを使うと、グリッド上で変則的な配置が行えます。

ポイント

以下の記述で figure を 2 × 3 のグリッドに分割しています。

gs を 2 × 3 の 2次元配列と考え、グラフを配置したい場所を指定します。たとえば

この gs[x, x] を subplot に渡して座標軸を作成します。

描画はこうなります。
gridspec4

スポンサーリンク
その他の記事
  1. ひよこパイソン says:

    パイソン超初心者です。
    いちばんはじめのx^2のグラフを実行してみたところ、couldn't connect to display "localhost:0.0"とエラーが出てしまいました。何かダウンロードしなければならないものがあるのでしょうか。

    • こんにちわ、ひよこパイソンさん。

      もしかして X 環境でしょうか。
      python というより、サーバー関係の設定のような気がします。
      たとえば、こんなページは参考になりませんか。
      http://d.hatena.ne.jp/sobasobasoba/mobile?date=20121231

コメントはお気軽に