Comment exporter des parcelles de matplotlib avec fond transparent?

j'utilise matplotlib pour faire quelques graphiques et malheureusement je ne peux pas les exporter sans le fond blanc.

sample plot with solid white background

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 est derrière lui plutôt que de le laisser transparaître. Comment puis-je exporter des parcelles avec un fond transparent à la place?

68
demandé sur Gordon Gustafson 2013-04-07 04:47:01

2 réponses

utilisez la fonction matplotlib savefig avec le mot-clé argument transparent=True pour enregistrer l'image comme un 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é en utilisant la commande ImageMagick display . Le motif de damier est l'arrière-plan visible à travers les parties transparentes du fichier PNG.

display screenshot

110
répondu Warren Weckesser 2014-02-07 15:18:15
Les fichiers Png

peuvent gérer la transparence. Vous pouvez donc utiliser la question pour sauvegarder le graphe en fichier image au lieu de L'afficher en utilisant Matplotlib pour vous enregistrer en tant que Fichier png .

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 rendre une zone entière transparente, alors il y a cette question: et puis utiliser la bibliothèque PIL comme dans cette question Python pil: comment rendre la zone transparente en PNG? pour rendre votre graphique transparent.

3
répondu Stephane Rolland 2017-05-23 10:31:09