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

问题描述 投票:0回答:2

我正在使用 matplotlib 制作一些图表,不幸的是我无法在没有白色背景的情况下导出它们。

sample plot with solid white background

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

python matplotlib plot transparency
2个回答
288
投票

使用 matplotlib

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

In [28]: import numpy as np

In [29]: from matplotlib.pyplot import plot, 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)

结果: demo.png

当然,该图并没有表现出透明度。 这是使用 ImageMagick

display
命令显示的 PNG 文件的屏幕截图。 棋盘图案是通过 PNG 文件的透明部分可见的背景。

display screenshot


5
投票

提醒一下, plt.savefig() 应该写在 plt.show() 之前,否则,将创建一个透明图像(没有实际的绘图)。

对于高质量图像:

plt.savefig('filename.png', format='png', dpi=600, transparent=True)
plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.