【问题标题】:Python add text to matplotlib.image.AxesImage instancePython 将文本添加到 matplotlib.image.AxesImage 实例
【发布时间】:2012-08-07 00:30:09
【问题描述】:

我有这个代码用于从一系列矩阵创建一系列图像,并且在每个图像中我想添加一个特定的文本。这是我的典型代码:

ax = axes([0,0,1,1])

for i in range(0,5):
    text(1,1,str(i))
    ax.imshow(a[:,:,i],origin='lower')
    savefig(str("%04d" % int(i))+'.png',format="png")
    del ax.texts[-1] 

但问题是随着迭代次数的增加,速度会下降并且变得如此缓慢。在后台打开很多窗口似乎有问题。

有什么建议吗?

【问题讨论】:

  • 你解决了吗?

标签: python text matplotlib


【解决方案1】:

每个循环都重用对象,而不是创建新的图像和文本对象。

ax = axes([0,0,1,1])
t = text(1,1,str(0))
img = ax.imshow(a[:,:,0],origin='lower')

for i in range(0,5):
    t.set_text(str(i)
    img.set_data(a[:,:,i])
    savefig(str("%04d" % int(i))+'.png',format="png")

另见

Visualization of 3D-numpy-array frame by frame

【讨论】:

  • 感谢您的回答!我只需添加 close(gcf()) 就可以了。我也试过你的,速度是一样的。但是对于您的情况,我们必须定义一个新的图形对象才能工作。
  • 如果这解决了您的问题,请接受它,如果您使用了不同的解决方案,请发布您使用的内容并接受您自己的答案。
【解决方案2】:

我刚刚在循环末尾添加了这一行,现在它工作正常。只是在内存中累积之前打开的数字的问题。

ax = axes([0,0,1,1])

for i in range(0,5):
    text(1,1,str(i))
    ax.imshow(a[:,:,i],origin='lower')
    savefig(str("%04d" % int(i))+'.png',format="png")
    del ax.texts[-1] 
    close(gcf())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多