使用matplotlib ArtistAnimation为动画添加文本

时间:2014-06-11 14:58:35

标签: python matplotlib

我有几个图像作为2D阵列,我想创建这些图像的动画,并添加更改的文本与图像。

到目前为止,我设法获得动画,但我需要你的帮助为每个图片添加文字

我有一个for循环来打开每个图像并将它们添加到动画中,并且假设我想要为每个图像添加图像编号(imgNum)。 / p>

这是我的代码,用于生成图像的电影,没有文字。

ims = []
fig = plt.figure("Animation")
ax = fig.add_subplot(111)

for imgNum in range(numFiles):
    fileName= files[imgNum]

    img = read_image(fileName)

    frame =  ax.imshow(img)          

    ims.append([frame])

anim = animation.ArtistAnimation(fig, ims, interval=350, blit=True, repeat_delay=350)

anim.save('dynamic_images.mp4',fps = 2)

plt.show()

那么,如何使用imgNum为每个图片添加文字?

感谢您的帮助!

1 个答案:

答案 0 :(得分:7)

您可以使用annotate添加文字,并将Annotation艺术家添加到您传递给ArtistAnimation的列表艺术家。以下是基于您的代码的示例。

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

ims = []
fig = plt.figure("Animation")
ax = fig.add_subplot(111)

for imgNum in range(10):
    img = np.random.rand(10,10) #random image for an example

    frame =  ax.imshow(img)   
    t = ax.annotate(imgNum,(1,1)) # add text

    ims.append([frame,t]) # add both the image and the text to the list of artists 

anim = animation.ArtistAnimation(fig, ims, interval=350, blit=True, repeat_delay=350)

plt.show()