Come esportare i grafici da matplotlib con sfondo trasparente?


108

Sto usando matplotlib per creare alcuni grafici e sfortunatamente non posso esportarli senza lo sfondo bianco.

trama campione con sfondo bianco pieno

In altre parole, quando esporto una trama come questa e la posiziono sopra un'altra immagine, lo sfondo bianco nasconde ciò che c'è dietro invece di lasciarlo trasparire. Come posso invece esportare grafici con uno sfondo trasparente?

Risposte:


177

Usa la savefigfunzione matplotlib con l'argomento parola chiave transparent=Trueper 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, quella trama non dimostra la trasparenza. Ecco uno screenshot del file PNG visualizzato utilizzando il displaycomando ImageMagick . Il motivo a scacchiera è lo sfondo visibile attraverso le parti trasparenti del file PNG.

visualizzare screenshot


2

I file png possono gestire la trasparenza. Quindi potresti usare questa domanda Salva grafico su file immagine invece di visualizzarlo usando Matplotlib in modo da salvare il grafico come pngfile.

E se vuoi rendere trasparenti tutti i pixel bianchi, c'è quest'altra domanda: usare PIL per rendere trasparenti tutti i pixel bianchi?

Se vuoi trasformare un'intera area in trasparente, allora c'è questa domanda: e poi usa la libreria PIL come in questa domanda Python PIL: come rendere l'area trasparente in PNG? in modo da rendere trasparente il tuo grafico.


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

2
Per quanto ricordo hai impostato quale è il colore trasparente in un png. file. Imposta il colore bianco come colore di trasparenza e il gioco è fatto.
Stephane Rolland

Suppongo che 255 sia bianco e quando ci vado perdo la trama!
Cupitor

Questo è strano. solo le tue trame? il grafico in nero e le unità in nero e anche la curva blu?
Stephane Rolland

1
c'è questa domanda sul trasformare tutti i pixel bianchi in trasparenza (non usare la maschera come ti ho collegato) stackoverflow.com/questions/765736/…
Stephane Rolland
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.