隅歩つ

書いて理解を深める

matplotlib の figure と axes を理解したい

matplotlib は基本中の基本しかわかっていません。

matplotlib を調べていると figure と axes というものが出てきたので調べてみました。

以下のサイトに詳しくわかりやすく説明がありました。

www.yutaka-note.com

figure と axes

figure と axes を調べてみると、figure は「図形」で、axes は「軸」でした。

そのまま翻訳するとよくわからないので、実際に表示してみます。

※axesはまだよくわかってません。

figure

figure は表示範囲のことだと思います。

今まで figure は使っていなかったのですが、plt.plot()を書けば自動的に設定されているようでして、特に設定が必要がなければ書かなくてもよいみたいです。

以下の行を追加すると図のようにサイズと背景(水色部分)が設定できます。

fig = plt.figure(figsize=(5, 5), facecolor="lightblue")

matplotlibのfigureとaxes

figsize の単位はインチのようです。

import matplotlib.pyplot as plt

x = [i for i in range(10)]
y = [i for i in range(10)]

fig = plt.figure(figsize=(5, 5), facecolor="lightblue")
plt.grid(color="0.8")
plt.plot(x, y)

plt.show()

背景色が設定できるのはテンションが上がって、matplotlib を使うのが楽しくなります。

all_subplot

all_subplotを使うとfigureの中に複数の図を作れます。

以下を1行入れると2つ並べたりできます。

ax1 = fig.add_subplot(1, 2, 1)

(1, 2, 1)で設定します。

最初の(1,2)で行と列を設定してます。

ax1 = fig.add_subplot(1, 2, 1)

3つ目の数字は順番です。「1」が1つ目(左)、「2」が2つ目(右)です。

matplotlibのfigureとaxes

この場合は、右の図に青色をつけています。

import matplotlib.pyplot as plt

x = [i for i in range(10)]
y = [i for i in range(10)]

fig = plt.figure(figsize=(10, 5), facecolor="lightblue")

ax1 = fig.add_subplot(1, 2, 1)
ax1.plot(x, y)

ax2 = fig.add_subplot(1, 2, 2, facecolor="blue")
ax2.plot(x, y)

plt.show()

subplots

all_subplotとは別にsubplotsというのがあります。

使い方は似ていますが、多くのグラフを並べたい場合に良さそうです。

以下の行を追加します。

axes = fig.subplots(2, 3)

(2, 3)の部分で行と列を設定します。この場合は、2行3列です。

matplotlibのfigureとaxes

そして、以下の行でどの場所に表を作るのかを決めます。

axes[1, 1].plot(x, y)

左上から右に(0,0)(0,1)(0,2)となり、下の行は(1,0)(1,1)(1,2)となります。

import matplotlib.pyplot as plt

x = [i for i in range(10)]
y = [i for i in range(10)]

fig = plt.figure(tight_layout=True, figsize=(8, 5), facecolor="lightblue")

axes = fig.subplots(2, 3)
axes[1, 1].plot(x, y)

plt.show()

以上です。

figure、axes、subplotについてうまく説明できなかったので、もっと理解できたらリライトします。