2013-04-07 27 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