Python动画轮廓图用于for循环中生成的函数

时间:2014-08-27 23:23:54

标签: python animation matplotlib

我有一个三变量函数myfunc,它在三个for循环内生成。我想绘制y vs x的等高线图,并在不同的时间t设置动画。但是,我查看了网页上的各种matplotlib示例,我仍然不确定如何执行此操作。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import animation

def myfunc(x,y,t):
    w = 0.5*x + y + 4*np.sin(1.8*t)
    return w

xlist = np.linspace(0,10,10)
ylist = np.linspace(-1,1,10)
tlist = np.linspace(0,50,50)

plt.figure()

for t in tlist:
    for x in xlist:
        for y in ylist:
            w = myfunc(x,y,t)
    w_vec = np.array(w)
    w_contour = w_vec.reshape((xlist.size, ylist.size))
    w_plot = plt.contourf(ylist,xlist,w_contour)


plt.xlabel('x', fontsize=16)
plt.ylabel('y', fontsize=16)

plt.show()

编辑:我非常喜欢本教程中dynamic_image2.py的外观。这似乎让事情发生了变化,但轴是错误的:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig = plt.figure()

def f(x,y,t):
    return 0.5*x + np.sin(y) + 4*np.sin(1.8*t)

x = np.linspace(0, 10, 10)
y = np.linspace(-1, 1, 10).reshape(-1, 1)
tlist = np.linspace(0,50,50)

ims = []

for t in tlist:
    x += np.pi / 15.0
    y += np.pi / 20.0
    im = plt.imshow(f(x,y,t))
    ims.append([im])

ani = animation.ArtistAnimation(fig, ims, interval=20, blit=True,
    repeat_delay=1000)

plt.show()

0 个答案:

没有答案