Wie exportiere ich Plots aus matplotlib mit transparentem Hintergrund?


107

Ich verwende matplotlib, um einige Grafiken zu erstellen, und kann sie leider nicht ohne den weißen Hintergrund exportieren.

Beispielplot mit festem weißem Hintergrund

Mit anderen Worten, wenn ich ein Diagramm wie dieses exportiere und es über einem anderen Bild positioniere, verbirgt der weiße Hintergrund das, was sich dahinter befindet, anstatt es durchscheinen zu lassen. Wie kann ich stattdessen Diagramme mit transparentem Hintergrund exportieren?

Antworten:


176

Verwenden Sie die savefigFunktion matplotlib mit dem Schlüsselwortargumenttransparent=True , um das Bild als PNG-Datei zu speichern.

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)

Ergebnis: demo.png

Natürlich zeigt diese Handlung nicht die Transparenz. Hier ist ein Screenshot der PNG-Datei, die mit dem displayBefehl ImageMagick angezeigt wird . Das Schachbrettmuster ist der Hintergrund, der durch die transparenten Teile der PNG-Datei sichtbar ist.

Screenshot anzeigen


2

PNG-Dateien können mit Transparenz umgehen. Sie können also diese Frage verwenden. Diagramm in Bilddatei speichern, anstatt es mit Matplotlib anzuzeigen , um Ihr Diagramm als zu speichernpng Datei zu speichern.

Und wenn Sie alle weißen Pixel transparent machen möchten, gibt es noch eine andere Frage: Verwenden Sie PIL, um alle weißen Pixel transparent zu machen?

Wenn Sie einen gesamten Bereich transparent machen möchten, gibt es folgende Frage: Verwenden Sie dann die PIL-Bibliothek wie in dieser Frage Python PIL: Wie wird der Bereich in PNG transparent gemacht? um Ihr Diagramm transparent zu machen.


Danke, aber das hilft nicht. Ich wusste, dass png transparent sein kann, die Ausgabe von matplotlib jedoch nicht. Außerdem deckt Ihr Vorschlag nur dann den Fall ab, wenn Sie Rechtecke entfernen möchten. Ich möchte, dass mein Plot gespeichert und mein Hintergrund entfernt wird.
Cupitor

2
Soweit ich mich erinnere, haben Sie festgelegt, welche Farbe in einem PNG transparent ist. Datei. Stellen Sie die weiße Farbe als Transparenzfarbe ein und los geht's.
Stephane Rolland

Ich nehme an, 255 ist weiß und wenn ich damit gehe, verliere ich meine Handlung!
Cupitor

das ist komisch. nur deine Grundstücke? das Diagramm in Schwarz und die Einheiten in Schwarz und die blaue Kurve auch?
Stephane Rolland

1
Es gibt diese Frage über das Umwandeln aller weißen Pixel in Transparenz (ohne die Maske zu verwenden, wie ich sie mit Ihnen verknüpft habe) stackoverflow.com/questions/765736/…
Stephane Rolland
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.