2012-07-14 119 views
0

我的目標產生的Y與X的情節相反,我所得到的是情節的X和標繪Y當我運行以下命令:爲什麼兩條曲線而不是一條曲線?

import numpy as np 
import matplotlib.pyplot as plt 
X = [x for x in np.arange(.8, 1.2, .05)] 
Y = [getm(v) for v in X] 
plt.plot(X, Y, '-o') 
plt.xlabel('X') 
plt.ylabel('Y') 
plt.grid() 
plt.savefig('test.png') 
plt.show() 

有什麼不對我的腳本?

+0

什麼是getm(V)?如果getm(v)的輸出是大小爲2的列表,則繪圖(X,Y)將具有兩行而不是1. – imsc 2012-07-14 13:06:58

+0

確實,我沒有檢查列表的大小。謝謝。 – amaity 2012-07-14 14:20:35

+2

線 X = [X在np.arange X(0.8,1.2,0.05)] 是多餘的,可以簡單地寫爲: X = np.arange(0.8,1.2,。 05) – pelson 2012-07-15 15:28:02

回答

0

函數getm的結果必須不止一個值。我用下面的代碼來驗證:

import matplotlib.pyplot as plt 
import numpy 

x = numpy.arange(0.8, 1.2, 0.05) 
y1 = [x_val**2 for x_val in x] 
y2 = [ [x_val**2, x_val**3] for x_val in x] 
y3 = [ [x_val**2] for x_val in x] 

plt.subplot(131) 
plt.plot(x, y1) 
plt.subplot(132) 
plt.plot(x, y2) 
plt.subplot(133) 
plt.plot(x, y3) 

plt.show() 

而結果是這樣的: enter image description here