Python
 Computer >> コンピューター >  >> プログラミング >> Python

Matplotlib.pyplotとMatplotlib.figureの違いとは?わかりやすく解説

Matplotlibでグラフを描く際によく使われるmatplotlib.pyplotmatplotlib.figure。どちらも図を作成するために使われますが、役割と仕組みが異なります。この記事では、それぞれの特徴と違いを具体例とともに解説します。


matplotlib.pyplotとは

matplotlib.pyplotは、MatplotlibをMATLABのように操作できるようにする関数のコレクションです。pyplotの各関数は、図(figure)に対して何らかの変更を加えます。例えば、次のような操作が該当します。

  • 新しい図(figure)を作成する
  • 図の中にプロット領域(Axes)を作る
  • プロット領域に線やデータを描画する
  • ラベルやタイトルなどでグラフを装飾する

matplotlib.pyplotでは、関数呼び出しの間にさまざまな状態が保持されます。そのため、「現在の図」や「現在のプロット領域」といった情報が内部的に追跡されており、描画関数は自動的に現在のAxesに対して適用されます。このステートフルな仕組みこそが、pyplotを手軽に使える理由です。

matplotlib.figureとは

Figureは、図全体を表すトップレベルのオブジェクトです。Figureは以下の要素を管理しています。

  • すべての子Axes(サブプロット)
  • タイトルや図全体の凡例といった「特殊な」アーティスト
  • 実際に描画を行うキャンバス(canvas)

1つのFigureには任意の数のAxesを含めることができますが、通常は少なくとも1つのAxesを持つのが一般的です。Figureを直接扱うことで、複数のサブプロットを柔軟にレイアウトするなど、より細かい制御が可能になります。

コード例

from matplotlib import pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

fig = plt.figure("I am figure window")

plt.show()

実行結果

Matplotlib.pyplotとMatplotlib.figureの違いとは?わかりやすく解説

まとめ

matplotlib.pyplotは「現在の図」や「現在のAxes」を自動的に管理するMATLAB風の手軽なインターフェースであり、matplotlib.figureは図・Axes・キャンバスを明示的に扱うオブジェクト指向のAPIです。簡単なグラフならpyplot、複雑なレイアウトや細かい制御が必要な場合はFigureオブジェクトを直接操作するのが効果的です。

  1. matplotlibとmatplotlib.pyplotのインポートの違いとは?わかりやすく解説

    Pythonでグラフを描画する際、import matplotlibとimport matplotlib.pyplotのどちらを使うべきか迷ったことはありませんか?この2つには明確な違いがあります。 matplotlibをインポートすると、パッケージ全体(すべてのサブモジュール)が読み込まれます。一方、matplotlib.pyplotだけをインポートした場合は、pyplotモジュールが持つ機能(プロット用のインターフェース)のみが利用可能になります。実際のデータ可視化では、pyplotの機能だけで十分なケースがほとんどのため、通常は後者の方法が使われます。 実装手順 matplotlib.

  2. Matplotlibのplt.show()とcv2.imshow()の違いとは?画像表示の差をわかりやすく解説

    Pythonで画像を扱う際、MatplotlibとOpenCV(cv2)はどちらも画像を多次元のNumPy配列として読み込みます。しかし、両者には重要な違いがあります。Matplotlibのimreadメソッドは画像を赤(R)・緑(G)・青(B)の順(RGB順)のNumPy配列として読み込み、imshowで画面に表示します。一方、OpenCVのcv2.imreadも同様に多次元NumPy配列として画像を読み込みますが、チャンネルの並びが逆順(BGR順)になっている点が最大の特徴です。この違いを理解せずに使うと、cv2で読み込んだ画像をMatplotlibで表示した際に色が反転して見えるという現