我试图创建一个微波传播的模拟,并在传播过程中改变频率。 x轴是时间,波应该沿着x轴移动,同时随后改变频率(从3GHz到30GHz)。时间间隔是一纳秒,因为如果超过这个时间间隔,它们将太快而无法清楚地注意到运动
我已经创建了wave matplotlib.pyplot的静态模型。现在我想使用matplotlib.animation来设置动画。 通过遵循本article中的指南,我可以成功地创建正弦波的动画,但我不知道从那里走到哪里
如何利用matplotlib.animation示例代码绘制正弦波并将其调整为动画微波
微波炉型号:
用于绘制微波模型的代码:
import numpy as np
from scipy.signal import chirp
import matplotlib.pyplot as plt
plt.style.use('seaborn-pastel')
T = 0.000000001 #one nanosecond
n = 1000 # number of samples to generate - the more generated,the more smooth the curve
t = np.linspace(0, T, n, endpoint=False) # x-axis
f0_micro = 3000000000 #frequency min value: 3GHz
f1_micro = 30000000000 #frequency max value: 30GHz
y_micro = chirp(t, f0_micro, T, f1_micro, method='logarithmic')
plt.plot(t,y_micro)
plt.grid(alpha=0.25)
plt.xlabel('t (secs)')
plt.title('Microwaves in one nanosecond')
plt.show()
动画正弦波视频:
https://miro.medium.com/max/960/1*Aa4huCJefHt7nlX3nKQKGA.gif
用于绘制动画正弦波的代码:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.animation import FuncAnimation
plt.style.use('seaborn-pastel')
fig = plt.figure()
ax = plt.axes(xlim=(0, 4), ylim=(-2, 2))
line, = ax.plot([], [], lw=3)
def init():
line.set_data([], [])
return line,
def animate(i):
x = np.linspace(0, 4, 1000)
y = np.sin(2 * np.pi * (x - 0.01 * i))
line.set_data(x, y)
return line,
anim = FuncAnimation(fig, animate, init_func=init,
frames=200, interval=20, blit=True)
anim.save('sine_wave.gif', writer='imagemagick')
赛璐珞是一种比
matplotlib.animate
更新、更容易使用的替代品它可以做你想做的事情,只需对静态绘图的代码做很少的修改。您不需要定义额外的函数等
最终结果如下
对于这种类型的动画
而不是绘制所有点
您必须创建具有正确限制的空绘图
稍后在
animation
中,您可以使用i
仅放置部分点编辑
如果需要使用边距打印,则必须向限制添加一些值,因为现在打印不会自动添加边距
如果您希望文件中的动画速度更快,则可以尝试使用
save( ..., fps= ...)
来更改frames per second
的数量或者你可以画更少的帧
并在每一帧中显示更多点
相关问题 更多 >
编程相关推荐