我正在尝试使用matplotlib为该函数设置动画:
但出于某种原因,当我在animate函数中编写它时:
l = 0.5
k = (2 * np.pi)/l
f = 4
w = 2 * np.pi * f
y = np.sin(k * x + w * i)
它没有动画,只有当我用数字写它时才会动画:
y = np.sin(15*x - 62 * i)
是什么原因?为什么我不能使用其他形式?
相关代码:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
line, = ax.plot([], [], lw=2)
# initialization function
def init():
line.set_data([], [])
return line,
# animation function
def animate(i):
x = np.linspace(0, 2, 1000)
l = 0.5
k = (2 * np.pi)/l
f = 4
w = 2 * np.pi * f
y = np.sin(k * x + w * i)
#y = np.sin(15*x - 62 * i)
line.set_data(x, y)
return line,
anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=300, interval=20, blit=True)
anim.save('basic_animation.mp4', fps=30, extra_args=['-vcodec', 'libx264'])
plt.show()
谢谢!
答案 0 :(得分:0)
唯一的问题是,您的f
是一个整数,因此w
是2 * np.pi
的倍数。整数i
的函数基本不变。将f
更改为非整数。