如何从具有透明背景的 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 导出绘图?的主要内容,如果未能解决你的问题,请参考以下文章
Python使用matplotlib绘制透明背景的可视化图像并保存透明背景的可视化结果(transparent background)