用語比較
OOスタイルとpyplotスタイルの違い|Axesを明示するか任せるか(Python3データ分析)
OOスタイルはFigureとAxesを明示的に作ってそのメソッドで描く方法、pyplotスタイルはpyplotにそれらを暗黙に作らせて管理させ、pyplotの関数で描く方法です。
Axesを自分で持つのがOO、持たずにplt.で呼ぶのがpyplotと見分けます。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
OOスタイルとpyplotスタイルの要点
OOスタイル
FigureとAxesを明示的に作り、Axesのメソッドで描く。ラベルは ax.set_xlabel・ax.set_ylabel・ax.set_title・ax.legend。公式は、複雑な図や再利用する関数・スクリプトに勧める。
pyplotスタイル
pyplotにFigureとAxesを暗黙に作らせ、pyplotの関数で描く。ラベルは plt.xlabel・plt.ylabel・plt.title・plt.legend。公式は、手早い対話的な作業に便利と説明する。
違いを表で確認
| 比較軸 | OOスタイル | pyplotスタイル |
|---|---|---|
| FigureとAxesの扱い | fig, ax = plt.subplots() のように、自分で作って ax を持つ | plt.figure() などで始め、Axesはpyplotが暗黙に作って管理する |
| 描く・ラベルを付ける書き方 | ax.plot()、ax.set_xlabel()、ax.set_ylabel()、ax.set_title()、ax.legend() | plt.plot()、plt.xlabel()、plt.ylabel()、plt.title()、plt.legend() |
| 公式が向くと説明する場面 | 複雑な図、大きなプロジェクトの一部として再利用する関数・スクリプト | 手早い対話的な作業 |
| pyplotの関数の使い方 | Figureの作成には、OOスタイルでもpyplotの関数(plt.subplots など)を使う | 描画からラベル設定まで、pyplotの関数で一貫して書く |
Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
手早くデータの形を確かめたい人
対話的に1枚だけ描く場面です。公式がpyplotスタイルを手早い作業に便利と説明しているので、plt.plot() や plt.xlabel() で素早く描けます。
同じ図を何度も作る関数やスクリプトを書く人
再利用する関数を書く場面です。公式がOOスタイルを勧めているので、Axesを引数で受け取って ax.plot() で描く形にします。
コードを見て、どちらのスタイルか問われて迷う人
Axesを変数で持ち、そのメソッドを呼んでいればOOスタイルです。plt. で始まる関数だけで描いていればpyplotスタイルです。
具体例で使い分ける
例 1
同じ図をOOスタイルで書く
公式のQuick start guideの例です。x = np.linspace(0, 2, 100) のデータで、線形・2乗・3乗の3本の線に、ラベルとタイトルと凡例を付けます。
- fig, ax = plt.subplots() で、FigureとAxesを自分で作ります。
- ax.plot() で3本の線を描き、ax.set_xlabel()、ax.set_ylabel()、ax.set_title()、ax.legend() で、ラベルとタイトルと凡例を付けます。
- 公式のコメントのとおり、OOスタイルでもFigureの作成にはpyplotの関数を使います。
結論: 描画も設定も、すべて ax のメソッドです。Figureを作る plt.subplots() だけがpyplotの関数になります。
例 2
同じ図をpyplotスタイルで書く
上と同じ図を、公式が示すpyplotスタイルで書きます。
- plt.figure() でFigureを作ります。Axesは明示せず、公式のコメントでは暗黙のAxesと説明されています。
- plt.plot() で3本の線を描き、plt.xlabel()、plt.ylabel()、plt.title()、plt.legend() でラベルとタイトルと凡例を付けます。
結論: ax を一度も持たず、plt. で始まる関数だけで同じ図になります。
例 3
ラベル設定の書き方の対応
OOスタイルのコードを、pyplotスタイルに書き換える場面です。
- ax.set_xlabel は plt.xlabel、ax.set_ylabel は plt.ylabel に対応します。
- ax.set_title は plt.title、ax.legend は plt.legend に対応します。
- OOスタイルのメソッドには set_ が付くものがあり、pyplotの関数には付かないと見分けられます。
結論: set_ の有無が目印です。ただし、legend はどちらも同じ名前です。
問題文から答えを選ぶ手順
- 1
Axesを変数で持っているかを見る
fig, ax = plt.subplots() のようにAxesを持ち、そのメソッドを呼ぶならOOスタイルです。
- 2
描く関数の呼び方を見る
plt.plot()・plt.xlabel() のようにpyplotの関数だけで描いているなら、pyplotスタイルです。
- 3
場面で選ぶ
複雑な図や再利用する関数・スクリプトならOOスタイル、手早い対話的な作業ならpyplotスタイルが向きます(公式の説明)。
試験での見分け方
- 1OOスタイルは、FigureとAxesを明示的に作り、そのメソッドを呼ぶ方法である。
- 2pyplotスタイルは、pyplotにFigureとAxesを暗黙に作成・管理させ、pyplotの関数で描く方法である。
- 3公式は、複雑な図や再利用する関数・スクリプトにはOOスタイルを勧める。
- 4OOスタイルでも、Figureの作成にはpyplotの関数を使う。
誤答しやすい選択肢
OOスタイルでは、pyplotの関数を一切使わないと考える
修正: 公式のコメントに、OOスタイルでもFigureの作成には pyplot.figure(plt.subplots など)を使うとあります。
pyplotスタイルは古く、使ってはいけないと考える
修正: 公式は、pyplotスタイルは手早い対話的な作業にとても便利と説明しています。強く非推奨とされているのは、古い例にある from pylab import * のpylabインターフェースです。
ラベル設定の関数名は、どちらのスタイルでも同じだと考える
修正: OOスタイルは ax.set_xlabel・ax.set_ylabel・ax.set_title、pyplotスタイルは plt.xlabel・plt.ylabel・plt.title と、名前が違います。
確認問題
Q1FigureとAxesを明示的に作り、そのメソッドを呼んで描くのはどちらのスタイルか?
答え: OOスタイル(オブジェクト指向スタイル)
pyplotスタイルは、pyplotにFigureとAxesを暗黙に作成・管理させる方法です。
Q2公式が、複雑な図や再利用する関数・スクリプトに勧めるのはどちらか?
答え: OOスタイル
pyplotスタイルは、手早い対話的な作業に便利と説明されています。
Q3OOスタイルで x ラベルを付けるメソッドと、pyplotスタイルで付ける関数は?
答え: OOスタイルは ax.set_xlabel、pyplotスタイルは plt.xlabel
OOスタイルのラベル設定は set_ の付くメソッドです。
Q4公式が強く非推奨とするインターフェースは何か?
答え: from pylab import * によるpylabインターフェース
古い例にあるpylabインターフェースが強く非推奨です。pyplotスタイルが非推奨なのではありません。
到達チェック
- OOスタイルとpyplotスタイルの違いを、Axesを明示するかどうかで説明できる
- 公式がどちらをどの場面に勧めているかを言える
- ax.set_xlabel と plt.xlabel のような対応を答えられる
- 強く非推奨なのはpylabインターフェースだと区別できる
関連ページで確認する
同じ資格で次に知りたいこと
- NumPyのreshapeとresizeの違い|形を変えた配列を返すか、配列そのものを変えるか(Python3データ分析)
NumPyのreshape関数とndarray.resizeメソッドの違いを、戻り値、元の配列が変わるか、次元に-1を指定したときの動きで整理します。NumPy公式のQuickstartで照合した、3行4列を2行6列にする例と確認問題つき。
- SeriesとDataFrameの違い|1次元のラベル付き配列か、行と列の表か(Python3データ分析)
pandasのSeriesとDataFrameの違いを、次元(1次元か2次元か)と作り方で整理します。pandas公式「10 minutes to pandas」の例で、リストから作るSeries、列を選ぶとSeriesになる点を確認。確認問題つき。
- NumPyのビューとコピーの違い|スライスは元の配列と共有、copyは共有しない(Python3データ分析)
NumPyのビュー(view)とコピー(copy)の違いを、データの共有、base属性、スライス、deep copyの動きで整理します。NumPy公式のQuickstartで照合した、スライスへの代入で元の配列が変わる例と確認問題つき。
よくある質問
QOOスタイルとpyplotスタイルの違いは?
OOスタイルはFigureとAxesを明示的に作ってそのメソッドを呼ぶ方法、pyplotスタイルはpyplotにFigureとAxesを暗黙に作成・管理させる方法です。
Q公式はどちらを勧めている?
複雑な図や、大きなプロジェクトの一部として再利用する関数・スクリプトにはOOスタイルを勧めています。pyplotスタイルは手早い対話的な作業に便利と説明しています。
QOOスタイルでpyplotは使わない?
使います。OOスタイルでも、Figureの作成には plt.subplots() などのpyplotの関数を使います。
Qpylabは使ってよい?
from pylab import * によるpylabインターフェースは、公式が強く非推奨としています。
Qデータ分析試験の範囲?
本サイトの第5章Matplotlibの「入力データとコーディングスタイル」で扱います。出題の形式や範囲は、受験前に公式の案内で確認してください。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
