matplotlib.ArtistAnimation
2 つのサブプロットをアニメーション化するために使用しようとしています。アニメーションの全長が 100 になるように、アニメーションが進行するにつれて x 軸の値を増やしたいのですが、いつでもサブプロットは 0 ~ 24 の時間値のみを表示し、100 まで繰り返します。
良い例をここに示します。このリンクは、x 値を使用してインクリメントFuncAnimation
するローリング方式で x 軸ラベルを使用および更新します。plot().axes.set_xlim()
コードは、提供されたリンクの YouTube ビデオの下のリンクから入手できます。
これらの結果を複製しようとする試みを示すコードを以下に追加しましたが、x 制限は時間とともにインクリメントするのではなく、最終的な値を取るようです。また、サブプロットに表示されるウィンドウ内の値をプロットするだけで (軸とは対照的に) ソリューションをインクリメントしようとしましたが、x 軸の値はインクリメントされません。自動スケーリングも実装しようとしましたが、x 軸はまだ更新されません。
実質的に同じ問題であるこの質問も見つけましたが、質問には答えられませんでした。
これが私のコードです:
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()
2 番目のサブプロット ( ax2
) で x 軸の値を更新するだけです。
どんな助けでも大歓迎です。