Beziehung zwischen dpi und Abbildung Größe
Habe ich eine Abbildung mit matplotlib aber ich merkte, dass die plot-Achse und die gezeichnete Linie wird heraus gezoomt.
Lesen dieses früher Diskussions-thread, es erklärt, wie Sie in der Abbildung Größe.
fig, ax = plt.subplots()
fig.set_size_inches(3, 1.5)
plt.savefig(file.jpeg, edgecolor='black', dpi=400, facecolor='black', transparent=True)
Mit dem obigen code (andere Konfigurationen aus Gründen der Kürze entfernt), ich bekomme eine daraus resultierende image-Datei mit 1200 X 600
gewünschten Abmessungen(sollten wir sagen, die Auflösung zu?) und die gewünschte Dateigröße.
Das projizierte Bild wird skaliert auf eine ungewöhnliche Weise, Anmerkungen zum Beispiel werden vergrößert. Ich kann zwar die Größe der Etiketten auf der Achse, die Figur sieht nicht proportional mit Bezug auf die Skala, da der untere und der Rechte Stacheln sind groß und so sind die gezeichneten Linien.
Die Frage ist daher, welche Konfigurationen falsch läuft?
Ich schuf ein Bild, wie sich herausstellte, mit den gewünschten Abmessungen und die Dateigröße ist in den Wunsch-Bereich. Jedoch ist der graph gezeichnet, stellte sich heraus, dass auch vergrößert/skaliert. Lesen der anderen threads, es scheint, es ist ein scaling und aspect-ratio-Problem, das könnte eine Rolle spielen werden. Ihrem Vorschlag zu erklären, jedes element Größe klingt eher ungewöhnlich, da würde ich denken, dass es sollte eine Möglichkeit zum anpassen aller Elemente im canvas-Bereich automatisch mit Bezug auf die zuvor eingestellten Parameter figsize() und dpi.
Lassen Sie es mich noch einmal versuchen: Wenn z.B. die pixel-dimension ist
1200 X 600
, Sie würden in der Regel erstellen Sie eine Abbildung mit der Größe (12 x 6)
Zoll und eine Auflösung von 100 dpi, in welchem Fall die Linien sind wohl angemessen dimensioniert. Mit einem dpi-Wert von 400, stattdessen macht jeder Punkt in der Abbildung 4-mal so groß. Das ist scheinbar nicht das, was Sie wollen. Aber wenn Sie es brauchen, können Sie die Skalierung die Elemente (z.B. machen die linewith 0.25 statt 1). (Es gibt keine Skalierung oder Höhen-Problem hier, das ist alles, wie es funktioniert und wie erwartet.)Blick auf den Kommentar, den Sie erwähnen, hier geht es um etwas völlig anderes; es sagt Ihnen, dass Sie nicht bekommen, ein Quadrat Achsen verwenden, auch wenn Sie eine quadratische Abbildung. Dies ist völlig unabhängig von problem hier.
Ich denke, ich bekomme Ihren Punkt. Mein Verständnis von der Beziehung zwischen dpi und figsize(x,y) leicht anders aus, was Sie erklärt haben. Basierend auf Ihren Kommentar, ich habe Ihren Vorschlag getestet und es sieht vielversprechend aus. Sollte ich vielleicht ändern Sie den Titel der Frage...
InformationsquelleAutor qboomerang | 2017-12-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Abbildung Größe (
figsize
) bestimmt die Größe der Figur in cm. Dieser gibt die Menge an Speicherplatz, die Achsen (und anderen Elementen) in der Abbildung. Die Standard-Figur, Größe ist(6.4, 4.8)
Zoll matplotlib 2. Eine größere Abbildung Größe können für längere Texte, mehr Achsen oder mehr ticklabels gezeigt werden.Punkte pro Zoll (dpi) bestimmt, wie viele Pixel das Bild beinhaltet. Die Standard-dpi matplotlib ist 100. Eine Abbildung von
figsize=(w,h)
habenSo, um ein Bild mit einer Pixelgröße von z.B.
(1200,600)
Sie wählen können mehrere Kombinationen von Figur, Größe und dpi-Zahl, z.B.Nun, was ist der Unterschied? Dies wird bestimmt durch die Größe der Elemente innerhalb der Figur. Die meisten Elemente wie Linien, Marker, Texte haben eine Größe, angegeben in Punkten.
Matplotlib zahlen verwenden Punkte pro Zoll (ppi) der 72. Eine Linie mit der Stärke 1 wird Punkt 1./72. Zoll breit. Ein text mit Schriftgrad 12 Punkte (12./72. Zoll Länge.
Natürlich, wenn Sie ändern Sie das Bild die Größe in Zoll, die Punkte nicht zu ändern, also eine größere Abbildung in Zoll hat immer noch die gleiche Größe der Elemente. Änderung der Abbildung die Größe ist so wie ein Stück Papier mit einer anderen Größe. Damit würde sich natürlich nicht ändern Sie die Breite der Linie, die mit dem gleichen Stift.
Auf der anderen Seite, die änderung der dpi skaliert die Elemente. Bei 72 dpi, eine Linie von 1-Punkt-Größe ist ein pixel stark. Bei 144 dpi, diese Linie ist 2 Pixel stark. Einen größeren dpi-Wert wird daher wirken Sie wie eine Lupe. Alle Elemente werden skaliert durch die vergrößernde Kraft der Linse.
Einen comparisson für Konstante Abbildung Größe und unterschiedlichen dpi ist in der Abbildung unten gezeigt auf der linken Seite. Auf der rechten Seite sehen Sie eine Konstante dpi und die Abbildung unterschiedlicher Größe. Zahlen in jeder Zeile haben die gleiche Pixelgröße.
Code zum reproduzieren:
InformationsquelleAutor ImportanceOfBeingErnest