【Python】Matplotlibの2つの記述法:Pyplot形式とオブジェクト指向形式の違い

目次

Matplotlibにおける2つの主要なスタイル

Matplotlibを用いたグラフ作成には、大きく分けて「Pyplot形式(MATLABスタイル)」と「オブジェクト指向形式」の2種類の記述方法があります。

Pyplot形式は記述が簡潔で、小規模なスクリプトやクイックなデータ確認に適しています。一方で、オブジェクト指向形式はグラフの各要素を明示的に操作するため、複数のグラフを並べたり、細かなカスタマイズを行ったりする複雑な描画において高い柔軟性を発揮します。

1. オブジェクト指向形式(推奨スタイル)

オブジェクト指向形式では、描画領域である Figure と、その中に配置されるグラフ部分である Axes を作成し、それぞれのオブジェクトに対してメソッドを呼び出します。

import matplotlib.pyplot as plt

# 広告費(Advertising)と売上(Sales)を想定したデータ
advertising_spend = [100, 250, 400, 600, 850]
sales_revenue = [1200, 2800, 3900, 6200, 9100]

# FigureオブジェクトとAxesオブジェクトの生成
fig = plt.figure(figsize=(8, 5))
ax = fig.add_subplot(1, 1, 1)

# 散布図のプロット
ax.scatter(advertising_spend, sales_revenue, color="blue", label="Campaign Results")

# 各種ラベル・タイトルの設定
ax.legend(["Q1 Performance"])
ax.set_title("Correlation between Ad Spend and Sales")
ax.set_xlabel("Spend (USD)")
ax.set_ylabel("Revenue (USD)")

# グラフの表示
plt.show()

2. Pyplot形式(MATLABスタイル)

Pyplot形式では、 matplotlib.pyplot モジュールが「現在アクティブなグラフ」を内部的に管理します。オブジェクトを意識せずに直接関数を呼び出すため、コード量を抑えることができます。

import matplotlib.pyplot as plt

# 広告費(Advertising)と売上(Sales)を想定したデータ
advertising_spend = [100, 250, 400, 600, 850]
sales_revenue = [1200, 2800, 3900, 6200, 9100]

# Pyplot形式による直接的なプロット
plt.scatter(advertising_spend, sales_revenue, color="red", label="Campaign Results")

# 各種設定
plt.legend(["Q1 Performance"])
plt.title("Correlation between Ad Spend and Sales")
plt.xlabel("Spend (USD)")
plt.ylabel("Revenue (USD)")

# グラフの表示
plt.show()

実行結果

上記のコードを実行すると、それぞれ指定したスタイルで散布図が表示されます。

(グラフィックウィンドウが起動し、以下の内容が表示されます)
・タイトル: Correlation between Ad Spend and Sales
・X軸: Spend (USD) [100から850までの目盛り]
・Y軸: Revenue (USD) [1200から9100までの目盛り]
・プロット内容: 指定したデータポイントが青色(オブジェクト指向形式)または赤色(Pyplot形式)の点で表示
・凡例: Q1 Performance と表示

記述方法の比較と使い分け

今回紹介した2つのスタイルには、以下のような特徴があります。

項目オブジェクト指向形式Pyplot形式
主な用途複雑なグラフ、複数プロット簡易的な描画、対話的利用
制御性非常に高い(明示的)限定的(暗黙的)
可読性構造が明確で大規模開発向き直感的で短いコード向き

基本的には、現在の主流であり将来的な拡張性も高い「オブジェクト指向形式」での記述を推奨します。一つのプログラム内で両方のスタイルを混在させると混乱の元となるため、どちらかに統一して記述することが重要です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次