3235 Stimmen

Wie kann man die Größe der mit Matplotlib gezeichneten Figuren ändern?

Wie kann man die Größe einer mit Matplotlib gezeichneten Figur ändern?

1907voto

Jouni K. Seppänen Punkte 39674

figure gibt Ihnen die Signatur des Anrufs an:

from matplotlib.pyplot import figure

figure(figsize=(8, 6), dpi=80)

figure(figsize=(1,1)) würde ein Zoll-mal-Zoll-Bild erzeugen, das 80 mal 80 Pixel groß wäre, es sei denn, Sie geben auch ein anderes dpi-Argument an.

147 Stimmen

Wenn Sie die Abbildung bereits erstellt haben, sagen wir, es ist 'Abbildung 1' (das ist die Standardabbildung, wenn Sie Pyplot verwenden), können Sie figure(num=1, figsize=(8, 6), ...) verwenden, um die Größe zu ändern usw. Wenn Sie pyplot/pylab verwenden und show() um ein Popup-Fenster zu erstellen, müssen Sie Folgendes aufrufen figure(num=1,...) antes de pyplot/pylab erstellt eine Figur, sobald Sie etwas zeichnen, und die Größe des Popups scheint zu diesem Zeitpunkt festgelegt zu sein.

8 Stimmen

Heißt das, wenn Sie DPI auf 1 setzen, wird die Bildgröße zu einer Pixeleinheit anstelle einer Inch-Einheit? Dies wäre nützlicher bei der Verwendung von Matplotlib auf Web- und GUI-Schnittstellen.

3 Stimmen

Mit figsize(1,1) haben Sie ein Verhältnis im Bild als 1:1? weil alle meine Tortendiagramme oval sind, und der einzige Weg, den ich gefunden habe, um sie rund zu machen, war die Verwendung von plot.axis("equals"). würden sie den gleichen Effekt haben oder verhalten sie sich anders?

1174voto

Pete Punkte 15009

Wenn Sie die Figur bereits erstellt haben, können Sie mit figure.set_size_inches um die Größe der Figur anzupassen:

fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5, 10.5)
fig.savefig('test2png.png', dpi=100)

Um die Größenänderung auf ein bestehendes GUI-Fenster zu übertragen, fügen Sie forward=True :

fig.set_size_inches(18.5, 10.5, forward=True)

Zusätzlich als Erik Shilts in den Kommentaren erwähnt können Sie auch verwenden figure.set_dpi die Auflösung der Abbildung in Punkten pro Zoll anzugeben".

fig.set_dpi(100)

6 Stimmen

Ich habe ein Problem gelöst mit imshow Jetzt verwende ich diesen Code, nachdem ich den Raum um den Plotbereich mit plt.subplots_adjust(left=0.0, right=1.0, bottom=0.0, top=1.0) .

16 Stimmen

In ähnlicher Weise können Sie fig.set_dpi(100) .

2 Stimmen

Ich verwende dies auf OS X unter ipython 3.7, matplotlib 3.0.3. Ich kann die Größe der Figur anpassen, aber die Größe des Fensters ändert sich nicht (die Leinwand der Figur passt sich an, aber das Fenster wächst oder schrumpft nicht, um sich der Leinwand anzupassen). Das Argument des Schlüsselworts forward=True scheint auf dieser Plattform nicht die beabsichtigte Wirkung zu haben.

787voto

G M Punkte 17276

Verwendung von plt.rcParams

Es gibt auch eine Umgehung für den Fall, dass Sie die Größe ändern möchten, ohne die Figurenumgebung zu verwenden. Falls Sie also Folgendes verwenden plt.plot() können Sie zum Beispiel ein Tupel mit Breite und Höhe festlegen.

import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,3)

Dies ist sehr nützlich, wenn Sie inline plotten (z. B. mit IPython-Notebook ). Unter asmaier bemerkt ist es ratsam, diese Anweisung nicht in dieselbe Zelle wie die Importanweisungen zu setzen.

So setzen Sie die globale Abbildungsgröße für nachfolgende Darstellungen wieder auf die Standardwerte zurück:

plt.rcParams["figure.figsize"] = plt.rcParamsDefault["figure.figsize"]

Umrechnung in cm

El figsize Tupel akzeptiert Zoll, wenn Sie es also in Zentimetern angeben wollen, müssen Sie durch 2,54 dividieren. Werfen Sie einen Blick auf diese Frage .

7 Stimmen

Ausgezeichnet! Auch nützlich für die einmalige Einstellung und das mehrmalige Plotten.

3 Stimmen

Aus irgendeinem Grund scheint dies im Jupyter-Notebook nicht mehr zu funktionieren (war aber früher so).

0 Stimmen

@Ray Kannst du die Version deines Jupyter-Notizbuchs und das Verhalten schreiben, damit es bei mir funktioniert

441voto

tatwright Punkte 34103

Vermerk zur Veraltung:
Gemäß der offizielle Matplotlib-Anleitung Verwendung des pylab Modul wird nicht mehr empfohlen. Bitte erwägen Sie die Verwendung des matplotlib.pyplot Modul stattdessen, wie beschrieben durch diese andere Antwort .

Das Folgende scheint zu funktionieren:

from pylab import rcParams
rcParams['figure.figsize'] = 5, 10

Damit ist die Figur 5 Zoll breit und 10 Zoll hoch. Zoll .

Die Klasse Figure verwendet dies dann als Standardwert für eines ihrer Argumente.

3 Stimmen

Dies funktioniert auch gut am Anfang eines iPython-Notizbuchs, das (bei --pylab=inline) rcParams bereits auf der obersten Ebene importiert hat.

4 Stimmen

Auf meinem Windows-Rechner mit OO-Schnittstelle zu pyplot und Qt-Backend hat das nicht funktioniert. fig.set_size_inches(18.5, 10.5, forward=True) gearbeitet.

3 Stimmen

Diese Antwort wird derzeit diskutiert auf Meta

434voto

iPAS Punkte 4223

Versuchen Sie bitte einen einfachen Code wie den folgenden:

from matplotlib import pyplot as plt
plt.figure(figsize=(1,1))
x = [1,2,3]
plt.plot(x, x)
plt.show()

Sie müssen die Größe der Abbildung vor dem Plotten festlegen.

21 Stimmen

Diese Antwort sagt mir, dass es m atplotlib.pyplot.figure was die anderen nicht so deutlich sagen. Ich versuche immer wieder Dinge wie matplotlib.figure y matplotlib.figure.Figure

0 Stimmen

"_tkinter.TclError: nicht genügend freier Speicher für Bildpuffer"

10 Stimmen

plt.figure(figsize=(1,1)) ist der entscheidende Schritt. Ich danke Ihnen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X