Python matplotlib-如何将数组保存为带有重叠文本的图像?

Python matplotlib-如何将数组保存为带有重叠文本的图像?,python,image,matplotlib,Python,Image,Matplotlib,我有一个2D数组,需要保存为png。我还需要添加一个文本标签的形象。到目前为止,我已经尝试了两种方法,但没有一种是最优的: 我使用matplotlib.image模块将数组直接保存为图像: matplotlib.image.imsave(FILENAME, ARRAY, cmap=plt.cm.binary) 但是,我无法使用该命令添加文本。保存原始图像后,我可以使用PIL进行读取和编辑,但在大数据集上的I/O成本是不可接受的 我使用pyplot界面将数组转换为图形,然后添加图例。但是,

我有一个2D数组,需要保存为
png
。我还需要添加一个文本标签的形象。到目前为止,我已经尝试了两种方法,但没有一种是最优的:

  • 我使用
    matplotlib.image
    模块将数组直接保存为图像:

    matplotlib.image.imsave(FILENAME, ARRAY, cmap=plt.cm.binary)  
    
    但是,我无法使用该命令添加文本。保存原始图像后,我可以使用
    PIL
    进行读取和编辑,但在大数据集上的I/O成本是不可接受的

  • 我使用
    pyplot
    界面将数组转换为图形,然后添加图例。但是,当我将其保存为文件时,会出现不必要的空白。我曾尝试关闭轴,将填充设置为0等,但始终存在一些无法消除的空白:

    import matplotlib.pyplot as plt
    plt.imshow(ARRAY, cmap=plt.cm.binary)
    plt.axis('off') 
    plt.savefig(FILENAME, dpi=100, pad_inches=0.0, bbox_inches='tight')
    

有没有一种方法可以快速地从2D数组、覆盖文本和另存为.png生成图像,而无需空白?最好是使用matplotlib/PIL的解决方案,但如果有更好的解决方案,我可以研究一下。

我从一开始就使用面向对象的方法解决了我的问题:

import matplotlib.pyplot as plt
fig = plt.figure(dpi=100, tight_layout=True, frameon=False, figsize=(resolution/100.,resolution/100.)) # dpi & figsize of my choosing
fig.figimage(ARRAY, cmap=plt.cm.binary)
fig.text(X,Y,TEXT, size='medium', backgroundcolor='white', alpha=0.5)
plt.savefig(FILENAME)
plt.close(fig)
可以找到
类的其他文档

注意:对于大小调整数字,我发现这种关系很有用:
英寸大小=像素分辨率/DPI

重复: