2016-04-29 60 views
-1

設f是依賴於獨立變量x和一個(或多個)參數b的函數。 我的目標是將f的幾個b值繪製到同一圖像中。我希望b是一個全球價值(以便我可以快速改變它)。 考慮代碼python:在一個子圖中多次繪圖2grid-image

import numpy as np 
import pylab as pl 

b=0.5 
def f(x,b): 
    return np.sin(x*b)*b 

X = np.linspace(0,10,1000) 
F = f(X,b) 
pl.figure(figsize=(12, 16), num="My sine") 
pl.plot(X, F, label='b = %f' %b) 
pl.legend(loc="best") 

此代碼可多次評估,只是對於b的另一值。然後所有的曲線都繪製成相同的圖形。

現在的問題: 如果在上面的代碼,我把

pl.subplot2grid((4, 1), (0, 0), rowspan=3) 

pl.plotpl.legend之間,代碼的每一個新的評價被拉入一個新的空白身影。

那麼,我怎麼能意識到,使用pl.subplot2grid每個評估都被繪製到同一個數字?

回答

1

也許您正在尋找這樣的事情?:

import numpy as np 
import pylab as pl 

def f(x,b): 
    return np.sin(x*b)*b 

def draw(b): 
    X = np.linspace(0,10,1000) 
    F = f(X,b) 
    ax1.plot(X, F, label='b = %f' %b) 


# Main program 
fig = pl.figure(figsize=(12, 16), num="My sine") 
ax1 = pl.subplot2grid((4,3), (0,0), colspan=2) 

for b in [0.4, 0.5, 0.6]: 
    draw(b) 

pl.legend(loc="best") 
pl.show() 

enter image description here

+0

關於您的建議的好處是,它確實將所有曲線繪製到同一個圖中。但是,如果可能的話,我想保持全球價值。 – Chris

+0

還有壞事? – tfv

+0

我想保持一個全局的,這是沒有在循環中的其他地方指定。 – Chris

0

我做到了,現在用LookAtf函數內部的循環,因爲你,TFV,推薦。這是我的結果My result

然而,傳說仍然沒有按照我的意願去做。 但無論如何感謝提示!

@ Arthur Havlicek: 其實我的代碼已經分爲3個部分。如果評估了3.部件,它將自動導入2.部件,該部件再次自動導入1.部件。 實際上,就我而言,在函數定義之後不可能定義常量。原因在於函數的定義方式取決於常量的選擇。所以,我首先必須定義常量,讓python知道它應該如何定義函數。