Matplotlib.pyplotとMatplotlib.figureの違いとは?わかりやすく解説
Matplotlibでグラフを描く際によく使われるmatplotlib.pyplotとmatplotlib.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は「現在の図」や「現在のAxes」を自動的に管理するMATLAB風の手軽なインターフェースであり、matplotlib.figureは図・Axes・キャンバスを明示的に扱うオブジェクト指向のAPIです。簡単なグラフならpyplot、複雑なレイアウトや細かい制御が必要な場合はFigureオブジェクトを直接操作するのが効果的です。
-
matplotlibとmatplotlib.pyplotのインポートの違いとは?わかりやすく解説
Pythonでグラフを描画する際、import matplotlibとimport matplotlib.pyplotのどちらを使うべきか迷ったことはありませんか?この2つには明確な違いがあります。 matplotlibをインポートすると、パッケージ全体(すべてのサブモジュール)が読み込まれます。一方、matplotlib.pyplotだけをインポートした場合は、pyplotモジュールが持つ機能(プロット用のインターフェース)のみが利用可能になります。実際のデータ可視化では、pyplotの機能だけで十分なケースがほとんどのため、通常は後者の方法が使われます。 実装手順 matplotlib.
-
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で表示した際に色が反転して見えるという現