Comment exporter des graphiques depuis matplotlib avec un fond transparent?

108

J'utilise matplotlib pour créer des graphiques et je ne peux malheureusement pas les exporter sans le fond blanc.

exemple de parcelle avec fond blanc uni

En d'autres termes, lorsque j'exporte un tracé comme celui-ci et que je le place au-dessus d'une autre image, le fond blanc cache ce qui se trouve derrière plutôt que de le laisser transparaître. Comment puis-je exporter des graphiques avec un arrière-plan transparent à la place?

Cupitor
la source

Réponses:

177

Utilisez le matplotlib savefig fonction avec l'argument mot-clé transparent=Truepour enregistrer l'image en tant que fichier 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)

Résultat: demo.png

Bien sûr, cette intrigue ne démontre pas la transparence. Voici une capture d'écran du fichier PNG affiché à l'aide de la displaycommande ImageMagick . Le motif en damier est l'arrière-plan visible à travers les parties transparentes du fichier PNG.

afficher une capture d'écran

Warren Weckesser
la source
2

Les fichiers Png peuvent gérer la transparence. Vous pouvez donc utiliser cette question Enregistrer le tracé dans un fichier image au lieu de l'afficher à l'aide de Matplotlib afin de sauvegarder votre graphique en tant quepng fichier.

Et si vous voulez rendre tous les pixels blancs transparents, il y a cette autre question: utiliser PIL pour rendre tous les pixels blancs transparents?

Si vous voulez transformer une zone entière en transparent, alors il y a cette question: Et puis utilisez la bibliothèque PIL comme dans cette question Python PIL: comment rendre une zone transparente en PNG? afin de rendre votre graphique transparent.

Stéphane Rolland
la source
Merci mais cela n'aide pas. Je savais que png est capable d'être transparent mais la sortie de matplotlib ne l'est pas. De plus, votre suggestion ne couvre que le cas lorsque vous souhaitez supprimer des rectangles. Je veux que mon intrigue soit enregistrée et que mon arrière-plan soit supprimé.
Cupitor
2
Pour autant que je me souvienne, vous définissez quelle est la couleur transparente dans un png. fichier. Définissez la couleur blanche comme couleur de transparence et c'est parti.
Stephane Rolland
Je suppose que 255 est blanc et quand j'y vais, je perds mon intrigue!
Cupitor
c'est étrange. vos parcelles seulement? le graphique en noir et les unités en noir et la courbe bleue aussi?
Stephane Rolland
1
il y a cette question sur la transformation de tous les pixels blancs en transparence (sans utiliser le masque comme je vous ai lié) stackoverflow.com/questions/765736/…
Stephane Rolland