我正在使用 matplotlib 制作一些图表,不幸的是我无法在没有白色背景的情况下导出它们。
换句话说,当我导出这样的图并将其放置在另一个图像的顶部时,白色背景隐藏了它背后的东西,而不是让它显示出来。如何改为导出具有透明背景的图?
我正在使用 matplotlib 制作一些图表,不幸的是我无法在没有白色背景的情况下导出它们。
换句话说,当我导出这样的图并将其放置在另一个图像的顶部时,白色背景隐藏了它背后的东西,而不是让它显示出来。如何改为导出具有透明背景的图?
使用带有关键字参数的 matplotlibsavefig
函数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)
结果:
当然,该图并不能证明透明度。这是使用 ImageMagickdisplay
命令显示的 PNG 文件的屏幕截图。棋盘图案是通过 PNG 文件的透明部分可见的背景。
Png 文件可以处理透明度。因此,您可以使用这个问题Save plot to image file 而不是使用 Matplotlib 显示它,以便将您的图形保存为png
文件。
如果你想让所有白色像素透明,还有另一个问题:使用 PIL 使所有白色像素透明?
如果你想把整个区域变成透明,那么就有这个问题: 然后使用 PIL 库,就像这个问题Python PIL: how to make area transparent in PNG? 以使您的图形透明。