Python matplotlib-如何将数组保存为带有重叠文本的图像?
我有一个2D数组,需要保存为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界面将数组转换为图形,然后添加图例。但是,
png
。我还需要添加一个文本标签的形象。到目前为止,我已经尝试了两种方法,但没有一种是最优的:
- 我使用
模块将数组直接保存为图像:matplotlib.image
但是,我无法使用该命令添加文本。保存原始图像后,我可以使用matplotlib.image.imsave(FILENAME, ARRAY, cmap=plt.cm.binary)
进行读取和编辑,但在大数据集上的I/O成本是不可接受的PIL
- 我使用
界面将数组转换为图形,然后添加图例。但是,当我将其保存为文件时,会出现不必要的空白。我曾尝试关闭轴,将填充设置为0等,但始终存在一些无法消除的空白:pyplot
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重复: