1. ホーム
  2. python

[解決済み] matplotlib で plot, axes, figure を使ってプロットを描くことの違いは何ですか?

2022-06-08 14:41:01

質問

matplotlibでプロットを描くとき、バックエンドで何が起こっているのかよくわかりません。ドキュメントを読んで、それは役に立ちましたが、私はまだ混乱しています....

以下のコードは、同じプロットを3つの異なる方法で描画します。

#creating the arrays for testing
x = np.arange(1, 100)
y = np.sqrt(x)
#1st way
plt.plot(x, y)
#2nd way
ax = plt.subplot()
ax.plot(x, y)
#3rd way
figure = plt.figure()
new_plot = figure.add_subplot(111)
new_plot.plot(x, y)

さて、私の質問は - です。

  1. 3つのメソッドの違いは何でしょうか。つまり、3つのメソッドのいずれかが呼び出されたとき、フードの下では何が起こっているのでしょうか。

  2. どのメソッドをいつ使うべきで、どれを使うことの長所と短所は何ですか?

どのように解決するのですか?

方法1

plt.plot(x, y)

これは、(x,y)座標で1つの図形だけをプロットすることができます。もし、1つの図形を取得したいだけであれば、この方法を使用することができます。

方法2

ax = plt.subplot()
ax.plot(x, y)

これは、1つまたは複数の図を同じウィンドウにプロットするものです。このままでは1つの図しか描画されませんが、このようなものを作ることもできます。

fig1, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)

ax1、ax2、ax3、ax4と名付けた4つの図形を、それぞれ同じウィンドウに描画します。このウィンドウは、私の例ではちょうど4分割になります。

方法3

fig = plt.figure()
new_plot = fig.add_subplot(111)
new_plot.plot(x, y)

私は使いませんでしたが、ドキュメントが見つかります。

例です。

import numpy as np
import matplotlib.pyplot as plt

# Method 1 #

x = np.random.rand(10)
y = np.random.rand(10)

figure1 = plt.plot(x,y)

# Method 2 #

x1 = np.random.rand(10)
x2 = np.random.rand(10)
x3 = np.random.rand(10)
x4 = np.random.rand(10)
y1 = np.random.rand(10)
y2 = np.random.rand(10)
y3 = np.random.rand(10)
y4 = np.random.rand(10)

figure2, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
ax1.plot(x1,y1)
ax2.plot(x2,y2)
ax3.plot(x3,y3)
ax4.plot(x4,y4)

plt.show()

他の例です。