2013-04-07 83 views
56

我正在使用matplotlib来制作一些图表,不幸的是我不能在没有白色背景的情况下导出它们。如何从透明背景的matplotlib导出图块?

sample plot with solid white background

换句话说,当我出口的阴谋像这样和另一个图像的顶部位置,它的白色背景隐藏背后是什么,而不是让它显示出来。我怎样才能用透明背景导出阴谋?

回答

93

使用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

3

Png文件可以处理透明度。 因此,您可以使用此问题Save plot to image file instead of displaying it using Matplotlib,以便将图形保存为png文件。

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

如果你想打开的整个区域,以透明,那么就这个问题:然后在此使用PIL库像问题Python PIL: how to make area transparent in PNG?,以使您的图形透明。

+0

谢谢,但这没有帮助。我确实知道png能够透明,但matplotlib的输出不是。 再加上你的建议只涵盖了当你想删除矩形的情况。我希望我的情节被保存,我的背景被删除。 – Cupitor 2013-04-07 01:16:26

+2

据我记得你设置哪个是png中的透明颜色。文件。将白色设置为透明度颜色,然后就可以了。 – 2013-04-07 01:22:07

+0

我想255是白色的,当我和它一起去的时候,我的情节丢了! – Cupitor 2013-04-07 01:30:38