Matplotのfigure作成方法

前回からの続きです。Matplotlibでグラフを作成する場合、FigureとAxesを明示的に作成しなければならないと書きましたが、もうひとつ、アプローチ方法があります。

Matplotlibの公式サイトでは、OO-style (オブジェクト志向スタイル) とpyplot-styleと整理されています。前回のplt.figure()もplt.subplots()も、OO-styleの書き方に該当します。

pyplot-styleでは、Figure/Axesをインスタンス化することなく、直接関数から描画してしまうという動作になります(厳密には違うかもしれませんが……)。pyplot-styleの方がコードがシンプルになる一方で、柔軟性のあるグラフ描画ができませんので、公式でも推奨している通り、一時的に簡単なチェックをしたいときに使うのがよさそうです。

名称概要公式の推奨
OO-style
(オブジェクト志向スタイル)
明示的にFigure/Axesを作成し、メソッドを呼び出す複雑なグラフや大規模プロジェクトで再利用をする場合に利用
pyplot-stylepyplotで自動でFigure/Axesを作成し、pyplot関数を使用するクイックな確認を行う場合に利用

散布図の設定例

実際に、OO-styleとpyplot-styleそれぞれのスタイルを用いて散布図を描いてみます。

まずは、必要ライブラリのインポートとデータの作成。これは、OO-styleとpyplot-styleのどちらの場合でもはじめに実施しておきます。

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(0)

# 0~100のランダムな整数値を生成
x = [np.random.randint(0, 100) for i in range(200)]
y = [np.random.randint(0, 100) for i in range(200)]

OO-styleによるグラフの作成

FigureとAxesをインスタンス化します。

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

# 以下の記述でも同義
# fig, ax = plt.subplots()

ax.scatter(x, y)

# ラベルの設定
ax.set_xlabel('x label')
ax.set_ylabel('x label')
ax.set_title('graph title (OO-style)')

pyplot-styleによるグラフの作成

Figure/Axesのインスタンス化は行いません。

また、ラベル・タイトルの設定方法はOO-styleとpyplot-styleとで少し差異があ理ますので注意が必要です。 (おそらく、OO-styleの場合は”set_”が頭につく)

plt.figure()
plt.scatter(x, y)

# ラベルの設定 (OO-styleとは名前が異なる)
plt.xlabel('x label')
plt.ylabel('y label')
plt.title('graph title (pyplot-style)')

コメントを残す

メールアドレスが公開されることはありません。