gpt4 book ai didi

python - 具有不同帧速率的子图的 ArtistAnimation

转载 作者:太空宇宙 更新时间:2023-11-03 14:14:25 24 4
gpt4 key购买 nike

考虑以下实现 ArtistAnimation 的代码对同一图形对象中的两个不同的子图进行动画处理。

import numpy as np
import itertools
import matplotlib.pyplot as plt
import matplotlib.mlab as ml
import matplotlib.animation as animation

def f(x,y,a):
return ((x/a)**2+y**2)

avals = np.linspace(0.1,1,10)
xaxis = np.linspace(-2,2,9)
yaxis = np.linspace(-2,2,9)

xy = itertools.product(xaxis,yaxis)
xy = list(map(list,xy))
xy = np.array(xy)
x = xy[:,0]
y = xy[:,1]



fig, [ax1,ax2] = plt.subplots(2)

ims = []

for a in avals:
xi = np.linspace(min(x), max(x), len(x))
yi = np.linspace(min(y), max(y), len(y))
zi = ml.griddata(x, y, f(x, y, a), xi, yi, interp='linear') # turn it into grid data, this is what imshow takes
title = plt.text(35,-4,str(a), horizontalalignment = 'center')
im1 = ax1.imshow(zi, animated = True, vmin = 0, vmax = 400)
im2 = ax2.imshow(zi, animated=True, vmin=0, vmax=400)
ims.append([im1,im2, title])

ani = animation.ArtistAnimation(fig, ims, interval = 1000, blit = False)

plt.show()

在本例中,im1 中的项目数和im2是相同的,并且每个子图的帧速率是相同的。

现在,假设我有 2 个列表,其中包含不同数量的项目,并且我希望 ArtistAnimate在相同的总时间内浏览帧。最初我想到操纵 interval ArtistAnimation 中的关键字调用但这意味着您可以为不同的艺术家设置不同的间隔,我认为这是不可能的。

无论如何,我认为基本思想很清楚len(im1)不等于len(im2) ,但动画需要在相同的时间内完成所有这些。

请问有什么办法可以做到这一点吗?谢谢

编辑

当我尝试下面提供的答案时,我应该补充一点,我宁愿使用 ArtistAnimation由于我的数据结构。如果没有其他选择,我将恢复到下面的解决方案。

最佳答案

是的,这是可能的,使用 Funcanimation 并将数据封装在 func 中。

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

arr1 = np.random.rand(300,3,4)
arr2 = np.random.rand(200,5,6)

fig, (ax1, ax2) = plt.subplots(1,2)
img1 = ax1.imshow(arr1[0])
img2 = ax2.imshow(arr2[0])

# set relative display rates
r1 = 2
r2 = 3

def animate(ii):
if ii % r1:
img1.set_data(arr1[ii/r1])
if ii % r2:
img2.set_data(arr2[ii/r2])
return img1, img2

ani = animation.FuncAnimation(fig, func=animate, frames=np.arange(0, 600))
plt.show()

关于python - 具有不同帧速率的子图的 ArtistAnimation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48282768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com