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

Posted

技术标签:

【中文标题】如何从具有透明背景的 matplotlib 导出绘图?【英文标题】:How to export plots from matplotlib with transparent background? 【发布时间】:2013-03-29 06:26:48 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

使用 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 文件的透明部分可见的背景。

【讨论】:

是否可以使背景透明而无需保存文件?假设我们使用plt.show() 在 Jupyter Notebook 中看到输出。有没有办法让它本身透明?这样当我从 jupyter notebook 输出复制和粘贴图像时,背景保持透明? @meet,我认为你应该开始一个新问题,或者在 discourse.matplotlib.org 中提出这个问题【参考方案2】:

Png 文件可以处理透明度。 所以你可以使用这个问题Save plot to image file instead of displaying it using Matplotlib 以便将你的图形保存为png 文件。

如果你想让所有的白色像素透明,还有这个问题:Using PIL to make all white pixels transparent?

如果你想把整个区域变成透明的,那么有这个问题:然后像这个问题Python PIL: how to make area transparent in PNG?那样使用PIL库来使你的图形透明。

【讨论】:

谢谢,但这无济于事。我确实知道 png 能够透明,但 matplotlib 的输出却不是。另外,您的建议仅涵盖要删除矩形的情况。我希望保存我的情节并删除我的背景。 据我记得你设置的是 png 中的透明颜色。文件。将白色设置为透明色,然后就可以了。 我想 255 是白色的,当我使用它时,我的情节丢失了! 这很奇怪。只有你的地块?黑色的图形和黑色的单位和蓝色曲线也是? 有一个关于将所有白色像素变为透明的问题(不使用我链接到你的蒙版)***.com/questions/765736/…

以上是关于如何从具有透明背景的 matplotlib 导出绘图?的主要内容,如果未能解决你的问题,请参考以下文章

gis如何导出透明背景的图?

如何更改Matplotlib表的透明度/不透明度?

C# GDI+导入图片如何让背景透明

Gnuplot - 如何更改键背景的不透明度?

Python使用matplotlib绘制透明背景的可视化图像并保存透明背景的可视化结果(transparent background)

如何使用 ggplot2 在 R 中制作具有透明背景的图形?