2011-08-02 8 views
69

私は新しいフィギュアやプロットDATA2を作成し、最後にちょっとこのように、元のプロットとプロットDATA3に来た後、データをプロットしたい:Matplotlibに2番目(新しい)のプロットを作成させ、後で古いプロットをプロットする方法を教えてください。

import numpy as np 
import matplotlib as plt 

x = arange(5) 
y = np.exp(5) 
plt.figure() 
plt.plot(x, y) 

z = np.sin(x) 
plt.figure() 
plt.plot(x, z) 

w = np.cos(x) 
plt.figure("""first figure""") # Here's the part I need 
plt.plot(x, w) 

FYI How do I tell matplotlib that I am done with a plot?は似ていますが、かなりのない何かをします!元のプロットにアクセスすることはできません。

答えて

90

あなた自身が定期的にこのようなことをやって見つけた場合、それはmatplotlibのためのオブジェクト指向のインターフェイスを調査価値があるかもしれません。あなたの場合:

import matplotlib.pyplot as plt 
import numpy as np 

x = np.arange(5) 
y = np.exp(x) 
fig1 = plt.figure() 
ax1 = fig1.add_subplot(111) 
ax1.plot(x, y) 

z = np.sin(x) 
fig2 = plt.figure() 
ax2 = fig2.add_subplot(111) 
ax2.plot(x, z) 

w = np.cos(x) 
ax1.plot(x, w) # can continue plotting on the first axis 

それはもう少し冗長ですが、それは特に、複数のサブプロットにはいくつかの数字それぞれと、を追跡するために非常に明確かつ簡単です。

+2

私は、多くの人物がいると予想しているように、オブジェクト指向のアプローチを好みます。数字ではなく名前を使用することで、それらを追跡するのが簡単になります。ありがとう! –

+0

しかし、このアプローチでは、どのようにラベルと軸の制限を変更できますか?私が 'ax1.ylabel'を使うと、それは見つからないと言います。 'fig1.ylabel'と同じです... –

+1

@GeorgeDatseris構文は少し異なります。 'ax1.set_xlabel(あなたのxラベル") '、' ax1.set_ylabel(あなたのyラベル ')'、 'ax1.set_title(あなたのタイトル") 'です。 – simonb

51

figureに電話するときは、単にプロット番号を付けます。

x = arange(5) 
y = np.exp(5) 
plt.figure(0) 
plt.plot(x, y) 

z = np.sin(x) 
plt.figure(1) 
plt.plot(x, z) 

w = np.cos(x) 
plt.figure(0) # Here's the part I need 
plt.plot(x, w) 

編集:あなたは(0から始まる、ここでは)したい、しかし、あなたはプロットに番号を付けることができますが、あなたは新しいものを作成するときに、すべて数字で姿を提供していない場合は、自動番号付けがされることに注意してください1で始まります(ドキュメントに従って "Matlab Style")。しかし

+3

これはmatplotlibの対話モードで動作するようですが、figure()... add_subplot()メソッドは動作しません。ありがとう! – chbrown

8

ので、1で始まる番号付け:

x = arange(5) 
y = np.exp(5) 
plt.figure(1) 
plt.plot(x, y) 

z = np.sin(x) 
plt.figure(2) 
plt.plot(x, z) 

w = np.cos(x) 
plt.figure(1) # Here's the part I need, but numbering starts at 1! 
plt.plot(x, w) 

をまた、このようなサブプロットとして図に複数の軸を、持っている場合、hはに対して所望の軸のハンドルオブジェクトであるaxes(h)コマンドを使用します。その軸に焦点を合わせる。

(新しい回答のため申し訳ありませんが、まだコメント権限を持っていない!)

+7

'0'が動作し、_automatic_番号付けは' 1'で始まります。 – agf

+0

@agf Ah。注目される。 –

0

私はいくつかの苦労した後、data_plot行列、ファイル名と順序を指定された図(異なる順序=別の図)の指定されたデータからボックスプロットを作成し、与えられたファイル名。

def plotFigure(data_plot,file_name,order): 
    fig = plt.figure(order, figsize=(9, 6)) 
    ax = fig.add_subplot(111) 
    bp = ax.boxplot(data_plot) 
    fig.savefig(file_name, bbox_inches='tight') 
    plt.close() 
関連する問題