我正在進行圖像分析,我想創建一個動畫的最終結果,其中包括時間序列的2D數據和一個像素的時間序列圖,一維繪圖會隨着2D動畫的進展而更新。然後將它們並排放置在一個子圖中下面的鏈接具有最終結果的圖像,該圖像最好是動畫效果。動畫使用matplotlib與subplots和ArtistAnimation
我不斷收到一個錯誤:AttributeError的: '名單' 對象有沒有屬性 'set_visible'。我搜索了它(和你一樣),並偶然發現http://matplotlib.1069221.n5.nabble.com/Matplotlib-1-1-0-animation-vs-contour-plots-td18703.html,其中一個人打鴨子的代碼設置set_visible屬性。不幸的是,plot命令似乎沒有這樣的屬性,所以我對如何生成動畫感到迷茫。我在下面的最小工作示例中包含了猴子補丁(註釋掉)以及第二個「im2」,它也被註釋掉了,它應該適用於任何試圖運行代碼的人。顯然它會給你兩個二維情節動畫。最小工作示例如下:
#!/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()
我也好奇是否有人知道的一個很酷的方式,突出了1D數據從提取出來的像素,甚至是從像素到畫一條線最右邊的子圖,以便以某種方式「連接」。
阿德里安
隨機提示,你可以用'fig,(ax1,ax2)= plt.subplots(1,2)'保存兩行 – Mark