gpt4 book ai didi

python - 使用带有子图和 ArtistAnimation 的 matplotlib 的动画

转载 作者:太空狗 更新时间:2023-10-29 20:39:47 25 4
gpt4 key购买 nike

我正在进行图像分析,我想创建最终结果的动画,其中包括二维数据的时间序列和单个像素的时间序列图,以便一维图更新为二维动画进展。然后将它们并排放置在一个子图中。下面的链接有一张最终结果的图片,最好是动画效果。

enter image description here

我不断收到错误消息:AttributeError:“list”对象没有属性“set_visible”。我用谷歌搜索(和你一样)并偶然发现了 http://matplotlib.1069221.n5.nabble.com/Matplotlib-1-1-0-animation-vs-contour-plots-td18703.html其中一只鸭子输入代码以设置 set_visible 属性。不幸的是,绘图命令似乎没有这样的属性,所以我不知道如何制作动画。我在下面的最小工作示例中包含了猴子补丁(已注释掉)以及第二个也被注释掉的“im2”,它应该适用于任何试图运行代码的人。显然它会给你两个 2D 绘图动画。最小工作示例如下:

#!/usr/bin/env python

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

#create image with format (time,x,y)
image = np.random.rand(10,10,10)
image2 = np.random.rand(10,10,10)

#setup figure
fig = plt.figure()
ax1=fig.add_subplot(1,2,1)
ax2=fig.add_subplot(1,2,2)

#set up list of images for animation
ims=[]
for time in xrange(np.shape(image)[1]):
im = ax1.imshow(image[time,:,:])
# im2 = ax2.imshow(image2[time,:,:])
im2 = ax2.plot(image[0:time,5,5])
# def setvisible(self,vis):
# for c in self.collections: c.set_visible(vis)
# im2.set_visible = types.MethodType(setvisible,im2,None)
# im2.axes = plt.gca()

ims.append([im, im2])

#run animation
ani = anim.ArtistAnimation(fig,ims, interval=50,blit=False)
plt.show()

我也很好奇是否有人知道一种很酷的方法来突出显示从中提取一维数据的像素,或者甚至从像素到最右边的子图画一条线,以便它们在某些地方“连接”方式。

阿德里安

最佳答案

plot 返回艺术家列表(因此错误指的是列表)。这样您就可以像 lines = plot(x1, y1, x2, y2,...) 那样调用 plot

改变

 im2 = ax2.plot(image[0:time,5,5])

 im2, = ax2.plot(image[0:time,5,5])

添加逗号将长度为 1 的列表解包到 im2

关于您的第二个问题,我们尝试在 SO 上每个线程只有一个问题,因此请打开一个新问题。

关于python - 使用带有子图和 ArtistAnimation 的 matplotlib 的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17853680/

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