matplotlib savefig () plots unterscheidet sich von show ()
Wenn ich show()
zum Plotten der Graphen im X
die Grafiken sieht sehr gut aus. Jedoch wenn ich die Anwendung starten savefig()
erzeugen große Menge von Graphen, die savefig()
erstellten Grafiken
'schriftart, Linien, Polygone sehen alle kleiner als die show()
erzeugten Graphen. Meine Umgebung ist Ubuntu und das backend für show()
ist Qt4Agg
. Wie kann ich machen das show()
plot und die savefig()
- Diagramm sieht konsistent?
Kommentar zu dem Problem
Ich hoffe, du hast nicht matplotlib installieren aus dem repository, da Ihre version ist schrecklich veraltet.
Das könnte nur der Fall sein.
InformationsquelleAutor der Frage leon | 2011-10-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
savefig
gibt den DPI-Wert für den gespeicherten Wert (Der Standardwert ist 100, wenn es nicht in Ihre .matplotlibrc, haben Sie einen Blick auf diedpi
kwargsavefig
). Es spielt keine inheret es von der DPI-Wert des ursprünglichen Abbildung.DPI wirkt sich auf die relative Größe des Textes und der Breite des Strichs auf Linien, etc. Wenn Sie möchten, Dinge zu identisch Aussehen, dann pass
fig.dpi
zufig.savefig
.E. g.
InformationsquelleAutor der Antwort Joe Kington
Machen Sie Ihr matplotlib Parzellen an verschiedene Geräte (z.B., on-screen-über Quarz-versus-Datei per pdf-Datei mit verschiedenen Funktionen (Grundstück versus savefig), deren Parameter sind fast dasselbe, aber die default-Werte für diese Parameter sind nicht die gleichen für beide Funktionen.
Anders ausgedrückt, die savefig default-Parameter sind anders aus die Standard - display Parameter.
Ausrichten ist einfach, wenn Sie tun es in der matplotlib config-Datei. Die template-Datei enthalten ist mit dem source-Paket, und benannte matplotlibrc.Vorlage. Wenn Sie nicht erstellen Sie bei der Installation von matplotlib, können Sie diese Vorlage aus der matplotlib Quelle, oder aus der matplotlib website.
Sobald Sie angepasst haben, diese Datei, wie Sie möchten, benennen Sie es um, matplotlibrc (keine Endung) und speichern Sie Sie im Verzeichnis .matplotlib (Hinweis: die führenden '.') das sollte in Ihrem home-Verzeichnis.
Den config-Parameter für speichern Figuren beginnt bei etwa Linie 314 in der mitgelieferten matplotlibrc.Vorlage (erste Zeile, bevor dieser Abschnitt ist: ### SPEICHERN von ZAHLEN).
Insbesondere, Sie werden wollen, schauen Sie diese:
Unterhalb dieser Zeilen sind die Einstellungen für die schriftart und verschiedene Bild-format-spezifische Parameter.
Diese gleichen Parameter für die Anzeige, d.h., PLT.show(), beginnen bei etwa Linie 277 ein in die matplotlibrc.Vorlage (dieser Abschnitt geht mit der Zeile: ### ABBILDUNG):
Wie Sie sehen können durch den Vergleich der Werte dieser beiden Blöcke von Parametern, die Standard-Einstellungen für das gleiche Bild-Attribut sind verschiedenen für savefig versus display (Karte).
InformationsquelleAutor der Antwort doug
Habe ich fest in mein matplotlib Quelle, aber es ist nicht eine ziemlich fix. Jedoch, wenn Sie, wie ich, sind ganz besonders über, wie die Grafik aussieht, es lohnt sich.
Das Problem scheint zu sein, in der render-backends; Sie erhalten jeweils die richtigen Werte für Linienbreite, Schriftgröße, etc., das kommt aber aus etwas größer, als dargestellt, als PDF oder als PNG gerendert mit show().
Habe ich ein paar Zeilen, um die Quelle für die PNG-Generierung, in der Datei matplotlib/backends/backend_agg.py. Sie könnten ähnliche Veränderungen für jede backend, die Sie verwenden, oder einen Weg finden, zu einem mehr gescheit ändern, von einem einzigen Standort aus 😉
Hinzugefügt, um meine matplotlib/backends/backend_agg.py Datei:
Damit passt meine Bedürfnisse für jetzt, aber, je nachdem, was Sie tun, möchten Sie vielleicht zu implementieren, ähnliche Veränderungen auch in anderen Methoden. Oder finden Sie einen besseren Weg, das gleiche zu tun, ohne so viele änderungen!
Update: Nach der Buchung eine Frage zu der matplotlib-Projekt bei Github, ich war in der Lage, die Spur der Ursache des mein problem: ich hatte mich geändert, die Figur.dpi-Einstellung in die matplotlibrc-Datei. Wenn dieser Wert anders ist als der Standardwert, meine savefig() Bilder kommen aus unterschiedlichen, auch wenn ich den savefig dpi das gleiche wie das Bild dpi. Also, anstelle der änderung der Quelle wie oben, ich habe einfach die Figur.dpi-Einstellung als Standard zu 80, und war in der Lage, erzeugen Bilder mit savefig (), die aussahen wie Bilder von show().
Leon, hatte Sie auch diese Einstellung geändert?
InformationsquelleAutor der Antwort Karmel
Alte Frage, aber anscheinend Google mag es, so dachte ich, setze ich die Antwort hier unten, nachdem einige der Forschung zu diesem problem.
Wenn Sie ein Bild von Grund auf neu können Sie einen Größe-option während der Erstellung:
figsize(Breite,Höhe) stellt die absolute dimension, die von Ihrem Grundstück und hilft, um sicherzustellen, dass beide Diagramme gleich Aussehen.
Wie bereits in einer anderen Antwort die dpi option wirkt sich auf die relative Größe des Textes und der Breite des Strichs auf Linien, etc. Mit der option dpi=Abb.dpi stellt sicher, dass die relative Größe dieser sind die gleichen sowohl für show() und savefig().
Alternativ die Abbildung Größe kann geändert werden nach der Erstellung mit:
vorwärts ermöglicht, um die Größe zu ändern on the fly.
Wenn Sie Probleme haben mit zu großen Grenzen in das erstellte Bild, das Sie anpassen können Sie diese entweder mit:
oder:
Die erste option ist einfach minimiert das layout und Grenzen und mit der zweiten option können Sie manuell anpassen, die Grenzen ein bisschen. Diese Tipps geholfen, zumindest mir, um mein problem zu lösen von verschiedenen savefig() und show() Bilder.
InformationsquelleAutor der Antwort brium-brium