web-dev-qa-db-fra.com

Comment exporter des parcelles depuis matplotlib avec un fond transparent?

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

sample plot with solid white background

En d’autres termes, lorsque j’exporte un tracé de ce type et le positionne au-dessus d’une autre image, l’arrière-plan blanc masque ce qui se cache derrière celui-ci au lieu de le laisser transparaître. Comment puis-je exporter des parcelles avec un arrière-plan transparent à la place?

86
Cupitor

Utilisez la fonction matplotlib savefig avec le mot-clé argument transparent=True pour 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, ce complot ne démontre pas la transparence. Voici une capture d'écran du fichier PNG affiché à l'aide de la commande ImageMagick display. Le motif en damier est l'arrière-plan visible à travers les parties transparentes du fichier PNG.

display screenshot

142
Warren Weckesser

Les fichiers .png peuvent gérer la transparence. Vous pouvez donc utiliser cette question Sauvegarder le tracé dans un fichier image au lieu de l’afficher avec Matplotlib afin de sauvegarder votre graphique sous forme de fichier png.

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

Si vous voulez rendre une zone entière transparente, posez la question suivante: Et utilisez ensuite la bibliothèque PIL comme dans cette question Python PIL: comment rendre la zone transparente en PNG? afin de créer votre graphique transparent.

3
Stephane Rolland