2016-06-22 12 views
25

私はmatplotlibにプロットを描くときにバックエンドで何が起こっているのか混乱しています。tbh、プロット、軸、図形の階層は明確ではありません。以下のコードは、3つの異なる方法で同じプロットを描画します...plot、axes、figureをmatplotlibで描画する場合の違いは何ですか?

を私がマニュアルを読み、それは参考になりましたが、私はまだ混乱している -

#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つの方法のいずれかが呼び出されたときに、どのようなことが起こっているのでしょうか?

  2. これらを使用する際の賛否両論はどのような方法で使用する必要がありますか?

+3

私はすでにそれを読んで、私は全く満足な答えを見つけることができませんでした。それは階層を説明するだけでなく、なぜ従来の方法がないのか、混乱を引き起こします。 – hashcode55

+1

私はこの質問をアップフォートし、FAVしました。<3 –

答えて

10

座標(x、y)とただ一つの図をプロットしてみましょう最初の方法。 1つのグラフィックだけを取得したい場合は、この方法で使用できます。

第2の方法は、同じウィンドウに1つまたは複数の図をプロットすることができます。あなたがそれを書いている時点で、あなただけの1の図をプロットしますが、あなたはこのような何かを行うことができます。

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

あなたはそれぞれ1 AX1、AX2、AX3およびAX4の名前が、同じウィンドウ上にある4つの数字をプロットします。このウィンドウは私の例とちょうど4つに分かれています。

第3の方法:私はそれを使用しませんでしたが、ドキュメントを見つけることができます。

例:

import numpy as np 
import matplotlib.pyplot as plt 

# First way # 

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

figure1 = plt.plot(x,y) 

# Second way # 

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() 

enter image description here enter image description here

その他の例:

enter image description here

+0

@ hashcode55各図は独立しています。私はあなたに例を示します – Deadpool

+0

@ hashcode55もしあなたが良い答え/例であれば、 "解決"を置くのを躊躇しないで;) – Deadpool

+1

@ hashcode55私は例を使って編集します(天体物理学の私の研究の数字だけスクリプトは長すぎます(1300行));)各図は独立しています; – Deadpool

関連する問題