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

新手上路,请多包涵

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

具有纯白色背景的示例图

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

原文由 Cupitor 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

使用带有关键字参数 transparent=True 的 matplotlib savefig 函数将图像保存为 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)

结果:演示.png

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

显示截图

原文由 Warren Weckesser 发布,翻译遵循 CC BY-SA 3.0 许可协议

PNG 文件可以处理透明度。所以你可以使用这个问题 将绘图保存到图像文件而不是使用 Matplotlib 显示它,以便将你的图形保存为 png 文件。

如果您想将所有白色像素变为透明,还有另一个问题: Using PIL to make all white pixels transparent?

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

原文由 Stephane Rolland 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题