2013-04-07 29 views
56

Sto usando matplotlib per fare alcuni grafici e sfortunatamente non riesco a esportarli senza lo sfondo bianco.Come esportare i grafici da matplotlib con sfondo trasparente?

sample plot with solid white background

In altre parole, quando esporto una trama come questo e posizionarlo in cima ad un'altra immagine, lo sfondo bianco nasconde ciò che è dietro di esso piuttosto che lasciare che per mostrare attraverso. Come posso esportare grafici con uno sfondo trasparente?

risposta

93

Utilizzare la funzione matplotlib savefig con l'argomento parola chiave transparent=True per salvare l'immagine come file 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) 

Risultato: demo.png

Naturalmente, che trama non dimostrare la trasparenza. Ecco uno screenshot del file PNG visualizzato utilizzando il comando ImageMagick display. Il motivo a scacchiera è lo sfondo visibile attraverso le parti trasparenti del file PNG.

display screenshot

3

I file Png possono gestire la trasparenza. Quindi è possibile utilizzare questa domanda Save plot to image file instead of displaying it using Matplotlib in modo da salvare il grafico come file png.

E se si desidera attivare tutti i pixel bianco trasparente, c'è quest'altra domanda: Using PIL to make all white pixels transparent?

Se si desidera attivare un'intera area a trasparente, poi c'è questa domanda: e quindi utilizzare la libreria PIL come in questo domanda Python PIL: how to make area transparent in PNG? in modo da rendere il tuo grafico trasparente.

+0

Grazie, ma questo non aiuta. Sapevo che il png è in grado di essere trasparente ma l'output di matplotlib non lo è. Inoltre il tuo suggerimento copre solo il caso in cui vuoi rimuovere i rettangoli. Voglio che la mia trama sia salvata e che il mio background sia rimosso. – Cupitor

+2

Per quanto mi ricordo si imposta quale è il colore trasparente in un png. file. Imposta il colore bianco come il colore della trasparenza e vai. –

+0

Suppongo che 255 sia bianco e quando vado con esso ottengo la mia trama persa! – Cupitor