如何从matplotlib导出具有透明背景的图?

ybzsozfc  于 2022-11-15  发布在  其他
关注(0)|答案(3)|浏览(199)

我正在使用matplotlib制作一些图形,不幸的是,如果没有白色背景,我就无法导出它们。

换句话说,当我导出这样的图并将其放置在另一个图像的顶部时,白色背景会隐藏其后面的内容,而不是让其显示出来。如何导出具有透明背景的图?

6gpjuf90

6gpjuf901#

使用matplotlib savefig函数和关键字参数transparent=True将图像保存为png文件。

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)

结果:

当然,该图并没有展示透明度。下面是使用ImageMagick display命令显示的PNG文件的屏幕截图。棋盘图案是通过PNG文件的透明部分可见的背景。

j91ykkif

j91ykkif2#

Png文件可以处理透明度。所以你可以使用这个问题Save plot to image file instead of displaying it using Matplotlib,以便将你的图形保存为png文件。
如果你想把所有白色像素变成透明的,还有一个问题:Using PIL to make all white pixels transparent?
如果要将整个区域变为透明,则有以下问题:然后使用PIL库,如本题Python PIL: how to make area transparent in PNG?中所示,以使图形透明。

nfzehxib

nfzehxib3#

请注意,plt.savefig()应在plt.show()之前写入,否则将创建透明图像(没有实际出图)。
对于高质量图像:

plt.savefig('filename.png', format='png', dpi='600', transparent=True)
plt.show()

相关问题