Python 是否可以在matplotlib中的动画期间更改速度
简言之,问题是(使用matplotlib.animation工具或python的其他模块)是否可以在动画的某些帧上获得慢动作 某些上下文: 我有一个matplotlib动画图,其中我改变了一个变量,并在另外两个变量上显示了一个等高线图。我的想法是当我接近函数的最大值时,减慢动画的速度,这样我可以更清楚地定位动画,而在没有太多兴趣的地方,则加速动画 目前,我最好的办法是将最接近最大值的帧翻倍,但有人能有更好的主意吗 谢谢大家Python 是否可以在matplotlib中的动画期间更改速度,python,matplotlib,animation,Python,Matplotlib,Animation,简言之,问题是(使用matplotlib.animation工具或python的其他模块)是否可以在动画的某些帧上获得慢动作 某些上下文: 我有一个matplotlib动画图,其中我改变了一个变量,并在另外两个变量上显示了一个等高线图。我的想法是当我接近函数的最大值时,减慢动画的速度,这样我可以更清楚地定位动画,而在没有太多兴趣的地方,则加速动画 目前,我最好的办法是将最接近最大值的帧翻倍,但有人能有更好的主意吗 谢谢大家 代码段: import matplotlib.pyplot as pl
代码段:
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
X = np.linspace(1,10, 100)
Y = np.linspace(1,10, 100)
R = np.linspace(-1, 1, 100)
ims = []
for r in R:
z = func(X, Y, r)
im = plt.imshow(z)
ims.append(im)
if check_r(r):
ims.append(im)
其中
func()
是一个函数,它返回一个(len(X),len(Y))
数组,该数组依赖于r
(例如Z[i,j]=X[i]**r*Y[j]**(1-r)
,而检查\r()
测试r
是否在需要最大化的值范围内。我认为你的想法是最好的。我还发现了另一种使用matplotlib动画的方法。这种方法是通过制作相同的点,将帧作为慢延迟使用
在本例中,仅绘制正弦曲线,但它将应用于其他函数
()
我认为你的想法是最好的。我还发现了另一种使用matplotlib动画的方法。这个想法是通过制作相同的点,使用帧作为慢延迟 在本例中,仅绘制正弦曲线,但它将应用于其他函数 ()
谢谢,但我认为这是我找到的同一个解决方案,除了用这种方法,你会对每一帧重复计算,而在我的例子中,计算只进行一次。如果计算比简单的
sin
函数更昂贵,这可能是你的解决方案的一个问题!谢谢,但我认为这是一样的我找到的解决方案,除了以这种方式重复每帧的计算,而在我的情况下,计算只进行一次。如果计算比简单的sin
函数更昂贵,这可能是解决方案的问题!
import numpy as np
import matplotlib.animation as animation
import matplotlib.pylab as plt
import pandas as pd
TWOPI = 2*np.pi
fig, ax = plt.subplots()
# making frames "delay"
frames = np.arange(0.0, TWOPI, 0.1)
frames = np.insert(frames, 17, [1.7]*5)
frames = np.insert(frames, 16, [1.6]*5)
frames = np.insert(frames, 15, [1.5]*5)
t = np.arange(0.0, TWOPI, 0.001)
s = np.sin(t)
l = plt.plot(t, s)
ax = plt.axis([0,TWOPI,-1,1])
redDot, = plt.plot([0], [np.sin(0)], 'ro')
def animate(i):
redDot.set_data(i, np.sin(i))
return redDot,
myAnimation = animation.FuncAnimation(fig, animate, frames=frames,
interval=100, blit=True, repeat=True)