我正在使用 matplotlib 制作一些图形,不幸的是,我不能导出没有白色背景他们。
换句话说,当我导出一个像这样的情节并将其放置在另一个图像之上时,白色背景会隐藏它背后的内容,而不是让它显示出来。如何导出具有透明背景的情节?
Png 文件可以处理透明性。 因此,您可以使用这个问题 将绘图保存到图像文件,而不是使用 Matplotlib 显示它,以保存您的图形作为一个 png文件。
png
如果你想把所有的白色像素都变透明,还有一个问题: 使用 PIL 使所有的白色像素透明?
如果你想把整个区域变成透明的,那么这里有一个问题: 然后像这个问题 Python PIL: 如何使 PNG 中的区域透明?一样使用 PIL 库,这样你的图就变得透明了。
使用带有关键字参数 transparent=True的 matplotlib savefig函数将图像保存为 png 文件。
transparent=True
savefig
In [30]: x = np.linspace(0,6,31) In [31]: y = np.exp(-0.5*x) * np.sin(x) In [32]: plot(x, y, 'bo-') Out[32]: [<matplotlib.lines.Line2D at 0x3f29750>] In [33]: savefig('demo.png', transparent=True)
结果:
当然,这个情节并没有显示出透明度。下面是使用 ImageMagickdisplay命令显示的 PNG 文件的屏幕快照。棋盘格模式是通过 PNG 文件的透明部分可见的背景。
display
提醒一下,plt.savefig ()应该写在 plt.show ()之前,否则将创建一个透明图像(没有实际的绘图)。
对于高质量的图像:
plt.savefig('filename.png', format='png', dpi='600', transparent=True) plt.show()