带有 contourf() 动画的 2D 行波?
2D traveling wave with contourf() animation?
你好我想要python轮廓animation.for例子每一秒都会有一个波浪从中心诞生并向外围传播。但我只想要 [0.0, 0.8]
波的水平。轮廓和颜色还可以,但动画效果不佳。如果有人可以帮助我吗?最后我想要这样的东西:
有谁知道如何在时间和我的函数之间制作link?我已经使用 time
模块在每次轮廓变化时生成,但它不起作用。
%pylab nbagg
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation
import matplotlib.animation as animation
#### generate some x,y,z data ####
r = np.linspace(0,6, num=100)
phi = np.linspace(0, 2*np.pi, num=200)
R, Phi = np.meshgrid(r,phi)
x = R*np.cos(Phi)
y = R*np.sin(Phi)
z = R
##################################
fig, ax=plt.subplots()
def data(x,y,z,i):
x = R*np.cos(Phi)
y = R*np.sin(Phi)
z = R-i
return z
def draw(i):
Z = data(x,y,z,i)
colors=('y','b')
levels = [0.0,0.8]
contourf(x,y,z,colors=('b', 'b', 'b', 'b', 'b', 'b', 'b','b'))
contourf(x,y,Z,levels=levels,colors=('y', 'b', 'b', 'b', 'b', 'b', 'b','b'))
#colorbar()
def animate(i):
ax.clear()
draw(i)
return ax,
draw(0)
ani = animation.FuncAnimation(fig,animate,np.arange(1, 10, .1),interval=5, blit=True)
plt.show()
在你的行中
ani = animation.FuncAnimation(fig,animate,np.arange(1,10),interval=5, blit=True)
只需向 np.arange()
添加一个步骤即可:np.arange(1, 10, .1)
.
最后一个参数决定增量。在你的例子中 np.arange()
生成了一个数组
[1, 2, 3, 4, 5, 6, 7, 8, 9]
然后动画函数显示了当时的情节。通过将步长从默认值 1 减少到 0.1,animate 函数有时会评估绘图
[1, 1.1, 1.2,..., 8.8, 8.9]
使动画更加流畅。
编辑:添加多个轮廓。
我使用 for 循环添加了一些轮廓并将它们及时移回,以便它们在动画开始后的某个时间出现。
%pylab nbagg
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation
import matplotlib.animation as animation
#### generate some x,y,z data ####
r = np.linspace(0,6, num=100)
phi = np.linspace(0, 2*np.pi, num=200)
R, Phi = np.meshgrid(r,phi)
x = R*np.cos(Phi)
y = R*np.sin(Phi)
z = R
##################################
fig, ax=plt.subplots()
def data(x,y,z,i):
x = R*np.cos(Phi)
y = R*np.sin(Phi)
z = R-i
return z
def draw(i):
colors=('y','b')
levels = [0.0,0.8]
contourf(x,y,z,colors=('b', 'b', 'b', 'b', 'b', 'b', 'b','b'))
for j in np.linspace(0, 6, 8)[::2]:
Z = data(x,y,z,i-j)
contourf(x,y,Z,levels=levels,colors=('y', 'b', 'b', 'b', 'b', 'b', 'b','b'))
#colorbar()
def animate(i):
ax.clear()
draw(i)
return ax,
draw(0)
ani = animation.FuncAnimation(fig,animate,np.arange(1,7, .1),interval=5, blit=1)
plt.show()
你好我想要python轮廓animation.for例子每一秒都会有一个波浪从中心诞生并向外围传播。但我只想要 [0.0, 0.8]
波的水平。轮廓和颜色还可以,但动画效果不佳。如果有人可以帮助我吗?最后我想要这样的东西:
有谁知道如何在时间和我的函数之间制作link?我已经使用 time
模块在每次轮廓变化时生成,但它不起作用。
%pylab nbagg
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation
import matplotlib.animation as animation
#### generate some x,y,z data ####
r = np.linspace(0,6, num=100)
phi = np.linspace(0, 2*np.pi, num=200)
R, Phi = np.meshgrid(r,phi)
x = R*np.cos(Phi)
y = R*np.sin(Phi)
z = R
##################################
fig, ax=plt.subplots()
def data(x,y,z,i):
x = R*np.cos(Phi)
y = R*np.sin(Phi)
z = R-i
return z
def draw(i):
Z = data(x,y,z,i)
colors=('y','b')
levels = [0.0,0.8]
contourf(x,y,z,colors=('b', 'b', 'b', 'b', 'b', 'b', 'b','b'))
contourf(x,y,Z,levels=levels,colors=('y', 'b', 'b', 'b', 'b', 'b', 'b','b'))
#colorbar()
def animate(i):
ax.clear()
draw(i)
return ax,
draw(0)
ani = animation.FuncAnimation(fig,animate,np.arange(1, 10, .1),interval=5, blit=True)
plt.show()
在你的行中
ani = animation.FuncAnimation(fig,animate,np.arange(1,10),interval=5, blit=True)
只需向 np.arange()
添加一个步骤即可:np.arange(1, 10, .1)
.
最后一个参数决定增量。在你的例子中 np.arange()
生成了一个数组
[1, 2, 3, 4, 5, 6, 7, 8, 9]
然后动画函数显示了当时的情节。通过将步长从默认值 1 减少到 0.1,animate 函数有时会评估绘图
[1, 1.1, 1.2,..., 8.8, 8.9]
使动画更加流畅。
编辑:添加多个轮廓。
我使用 for 循环添加了一些轮廓并将它们及时移回,以便它们在动画开始后的某个时间出现。
%pylab nbagg
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation
import matplotlib.animation as animation
#### generate some x,y,z data ####
r = np.linspace(0,6, num=100)
phi = np.linspace(0, 2*np.pi, num=200)
R, Phi = np.meshgrid(r,phi)
x = R*np.cos(Phi)
y = R*np.sin(Phi)
z = R
##################################
fig, ax=plt.subplots()
def data(x,y,z,i):
x = R*np.cos(Phi)
y = R*np.sin(Phi)
z = R-i
return z
def draw(i):
colors=('y','b')
levels = [0.0,0.8]
contourf(x,y,z,colors=('b', 'b', 'b', 'b', 'b', 'b', 'b','b'))
for j in np.linspace(0, 6, 8)[::2]:
Z = data(x,y,z,i-j)
contourf(x,y,Z,levels=levels,colors=('y', 'b', 'b', 'b', 'b', 'b', 'b','b'))
#colorbar()
def animate(i):
ax.clear()
draw(i)
return ax,
draw(0)
ani = animation.FuncAnimation(fig,animate,np.arange(1,7, .1),interval=5, blit=1)
plt.show()