2012-07-14 120 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