使用for循环进行Python绘图

时间:2013-02-21 13:43:06

标签: python

我是蟒蛇新手和绘图的东西。我试图使用以下脚本生成一个图。目标是为所有值绘制Q对F的图。

from pylab import *

n = 5
D = 13
B = 10

x = linspace(-6.5, 6.5, 1000)
y = 1/sqrt(2*pi)*exp(-(x)**2/2)

for i in range(1,n):
    F = sum(y*cos(2*pi*i*x/D)*exp(-i**2*B/(4*D**2)))
    print F

for j in range(1,n):
    Q = 2*pi*(j)/D
    print Q

plt.plot(Q,F,'rx')
plt.show()

当我运行脚本时,它只绘制一个数据点而不是全部。我确信,我做了一些愚蠢的错误。有人可以帮我出去吗?谢谢。

2 个答案:

答案 0 :(得分:2)

这是因为你将F和Q设置为等于每个循环上的值,而不是将值附加到数组的末尾。

from pylab import *

n = 5
D = 13
B = 10

x = linspace(-6.5, 6.5, 1000)
y = 1/sqrt(2*pi)*exp(-(x)**2/2)

F,Q = [],[]

for i in range(1,n):
    F.append(sum(y*cos(2*pi*i*x/D)*exp(-i**2*B/(4*D**2))))
    Q.append(2*pi*(j)/D)

plt.plot(Q,F,'rx')
plt.show()

答案 1 :(得分:0)

你只是在循环中设置Q,F相等。

from pylab import *

n = 5
D = 13
B = 10

x = linspace(-6.5, 6.5, 1000)
y = 1/sqrt(2*pi)*exp(-(x)**2/2)

for i in range(1,n):
    F.append(sum(y*cos(2*pi*i*x/D)*exp(-i**2*B/(4*D**2))))
    print F
    Q.append(2*pi*(j)/D)
    print Q

plt.plot(Q,F, 'rx')    
plt.show()