我正在嘗試使用matplotlib.ArtistAnimation
來動畫兩個子圖。我希望X軸隨着動畫的進展而增加值,這樣動畫的總長度是100,但是在任何時候,子圖都只給我提供0-24的時間值,然後迭代到100。使用matplotlib動畫更新x軸值
一個很好的例子是here。該鏈接使用FuncAnimation
,並使用plot().axes.set_xlim()
以滾動方式更新x軸標籤並增加x值。該代碼可通過所提供鏈接中YouTube視頻下方的鏈接獲得。
我附加了下面的代碼,顯示了我試圖複製這些結果,但x限制似乎取決於它們的最終值而不是隨着時間增加。我也嘗試通過只畫出在子圖中可見的窗口中的值來增加解決方案(與軸相對),但不會增加x軸值。我也嘗試實現自動縮放,但x軸仍不更新。
我也發現this question這實際上是同樣的問題,但問題從未得到解答。
這裏是我的代碼:
import matplotlib.pylab as plt
import matplotlib.animation as anim
import numpy as np
#create image with format (time,x,y)
image = np.random.rand(100,10,10)
#setup figure
fig = plt.figure()
ax1=fig.add_subplot(1,2,1)
ax2=fig.add_subplot(1,2,2)
#set up viewing window (in this case the 25 most recent values)
repeat_length = (np.shape(image)[0]+1)/4
ax2.set_xlim([0,repeat_length])
#ax2.autoscale_view()
ax2.set_ylim([np.amin(image[:,5,5]),np.amax(image[:,5,5])])
#set up list of images for animation
ims=[]
for time in xrange(np.shape(image)[0]):
im = ax1.imshow(image[time,:,:])
im2, = ax2.plot(image[0:time,5,5],color=(0,0,1))
if time>repeat_length:
lim = ax2.set_xlim(time-repeat_length,time)
ims.append([im, im2])
#run animation
ani = anim.ArtistAnimation(fig,ims, interval=50,blit=False)
plt.show()
我只想第二副區(ax2
)來更新x軸的值。
任何幫助將不勝感激。
http://stackoverflow.com/questions/17558096/animated-title-in-matplotlib/17562747#17562747 < - 得到blit更新標籤 – tacaswell
http://stackoverflow.com/questions/17888593/display-sequence -of-images-using-matplotlib – tacaswell
動畫在我使用blit時不會運行,不確定爲什麼 – abradd