用matplotlib叠加曲线

时间:2013-10-12 18:04:56

标签: python matplotlib

我想制作一系列曲线,使用此脚本将图像视为视频:

from pylab import *
a = 1
L = 3.0
T = 1
dx = 1e-3
dt = 1e-2

NX = int(ceil(L/dx))
NT = int(ceil(T/dt))

X  = np.linspace(-L,L, NX)
U0 = 1./sqrt(2*np.pi)*np.exp(-X**2/2)
Un = U0
Unext = zeros(NX)
line, = plot(X,U0)
show()

for n in range(NT):
    Unext[1:-2] = 1./2*(Un[2:-1]+Un[0:-3])
    Unext[1:-2] += -a*dt/2*dx*(Un[2:-1]+Un[0:-3])
    Un = Unext
    line.set_ydata(Un)
    draw()

但问题是我只有第一个。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

plot返回Line2D,您每次通过循环更新y数据。如果您想查看所有曲线,请每次循环调用plot:

for n in range(NT):
    Unext[1:-2] = 1./2*(Un[2:-1]+Un[0:-3])
    Unext[1:-2] += -a*dt/2*dx*(Un[2:-1]+Un[0:-3])
    Un = Unext
    plot(X, Un)
    draw()

如果您尝试假动画,则需要添加pause,以便查看每个更新的行:

for n in range(NT):
    Unext[1:-2] = 1./2*(Un[2:-1]+Un[0:-3])
    Unext[1:-2] += -a*dt/2*dx*(Un[2:-1]+Un[0:-3])
    Un = Unext
    line.set_ydata(Un)
    draw()
    plt.pause(.1)

此外,您的曲线在此范围内几乎相同。