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

时间:2013-04-07 00:47:02

标签: python matplotlib plot transparency

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

sample plot with solid white background

换句话说,当我导出这样的图并将其放在另一个图像的顶部时,白色背景会隐藏它背后的内容,而不是允许它显示。如何导出透明背景的图?

2 个答案:

答案 0 :(得分:133)

将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)

结果: demo.png

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

display screenshot

答案 1 :(得分:3)

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库,以使图表透明。