0Pricing
Python Academy · レッスン

FigureとAxes

プロットのモデルを理解します

「FigureとAxes」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。

プロットのモデル

Matplotlibは、Pythonで使われる基本的なプロット用ライブラリです。うまく使うには、FigureとAxesという2層構造のモデルを理解する必要があります。

Figureは、描画するすべての要素を載せる全体のウィンドウまたはページです。Axesは、そのFigure内にある1つのプロットで、独自のx座標系とy座標系を持ちます。

  • 1つのFigureには複数のAxesを配置できます
  • データが実際に配置されるのは各Axesです

Figure、Axes、Axisの違い

次の3つの用語は混同しやすいので注意してください。

  • Figureは、コンテナとなる画像全体です
  • Axesは、1つのプロット領域です(綴りに注意してください。axisの複数形ではありません)
  • Axisは、Axes内にあるx軸またはy軸の目盛りです

つまり、FigureにはAxesが含まれ、各Axesには2つ(または3つ)のAxisオブジェクトが含まれます。

FigureとAxesの作成

開始する際に推奨される方法はplt.subplots()です。1回の呼び出しでFigureとAxesを返します。

描画しなくても、モデル自体は簡単に考えられます。ここでは、これらのオブジェクトが何を表すのかをシミュレーションします。

fig = {'type': 'Figure', 'axes': []}
ax = {'type': 'Axes', 'parent': 'Figure'}
fig['axes'].append(ax)
print('Figure holds', len(fig['axes']), 'axes')
print('Axes parent is the', ax['parent'])

pyplotインターフェース

Matplotlibには2つのスタイルがあります。pyplot(状態ベース)スタイルではplt.plot()を使い、現在のFigureを自動的に管理します。オブジェクト指向スタイルでは、ax.plot()を明示的に使います。

簡単なスケッチを超える用途では、オブジェクト指向スタイルをおすすめします。複数のAxesを扱う場合にも、こちらのほうがわかりやすくなります。

オブジェクト指向が優れている理由

plt.title('X')を呼び出すと、その時点での現在のAxesに適用されます。複数のサブプロットがあると、どのAxesを指しているのか分かりにくくなります。

ax.set_title('X')を使えば推測する必要はありません。指定したAxesに対して確実にメソッドを適用できます。

座標系

各Axesは、データの値を画面上の位置に対応付けます。データ座標は数値が意味する値であり、Axesはそれらを描画領域に収まるように拡大縮小します。

この対応付けは、単純な数学でモデル化できます。

data_min, data_max = 0, 100
pixel_min, pixel_max = 0, 400

def to_pixels(value):
    frac = (value - data_min) / (data_max - data_min)
    return pixel_min + frac * (pixel_max - pixel_min)

for v in [0, 25, 50, 100]:
    print('data', v, '->', to_pixels(v), 'px')

FigureのサイズとDPI

Figureのサイズはインチで指定し、解像度は1インチあたりのドット数(DPI)で表します。ピクセルサイズは、この2つを掛け合わせた値です。

たとえば、6×4インチのFigureを100 DPIで作成すると、600×400ピクセルになります。

width_in, height_in = 6, 4
dpi = 100
print('Pixels:', width_in * dpi, 'x', height_in * dpi)

Axesの手動追加

plt.subplots()以外にも、fig.add_axes([left, bottom, width, height])を使えば、正確な矩形領域にAxesを追加できます。各値は、Figure内での0から1までの割合です。

インセットプロットやカスタムレイアウトは、この方法で作成します。

現在のFigure

PyplotはFigureの一覧と、現在のFigureを指すポインターを管理しています。plt.gcf()で現在のFigureを取得し、plt.gca()で現在のAxesを取得できます。

これらは主に状態ベーススタイルをサポートするためのものです。オブジェクト指向のコードでは、代わりに自分で参照を保持します。

表示と終了

plt.show()は、開いているすべてのFigureをウィンドウに描画します。plt.close()はFigureを解放します。多数のFigureを生成するスクリプトでは、Figureを閉じることでメモリの蓄積を防げます。

ノートブックでは、Figureが自動的にインライン表示されます。

頭の中のチェックリスト

何かを描画する前に、次の点を確認します。

  • Figureはいくつ必要ですか?
  • FigureごとにAxesはいくつ必要ですか?
  • それぞれのデータはどのAxesに属しますか?

これらを先に決めておくと、オブジェクト指向APIを自然に使えるようになります。

理解度チェック

FigureとAxesのモデルについて理解度を確認しましょう。

まとめ

Matplotlibの基本モデルを学びました。

  • Figure:インチ数とDPIの積でサイズが決まるコンテナ
  • Axes:独自の座標を持つ個々のプロット
  • Axis:x軸またはy軸の数直線
  • fig, ax = plt.subplots()を使うオブジェクト指向スタイルを優先します

このメンタルモデルがあれば、後で行うカスタマイズもすべて予測しやすくなります。

よくある質問

「FigureとAxes」レッスンは無料ですか?

はい。「FigureとAxes」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。

「FigureとAxes」で何を学びますか?

プロットのモデルを理解します ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Python Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「FigureとAxes」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPython Academyレッスンでコードを書いて実行できますか?

はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. FigureとAxes
  2. 折れ線、棒、散布図
  3. プロットのカスタマイズ
  4. サブプロットとレイアウト
← Python Academyに戻る