Matplotlib figure()-Funktion
Matplotlib-Referenzdokumentation
figure()Wird verwendet, um eine neue Figure (Zeichenfläche) zu erstellen oder eine vorhandene Figure zu aktivieren.
Figure ist der übergeordnete Container für alle Plots und verwaltet die Größe, DPI und alle Subplots des gesamten Diagramms.
Funktionsdefinition
matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, *,
facecolor=None, edgecolor=None, frameon=True,
FigureClass=<class 'matplotlib.figure.Figure'>,
clear=False, layout=None, **kwargs)
Parameterbeschreibung
| Parameter | Type | Beschreibung |
|---|---|---|
| num | int oder str | Figure-Bezeichner. Ganzzahlen sind Zahlen, Strings sind Beschriftungen. Wenn er nicht existiert, wird ein neuer erstellt; wenn er existiert, wird der vorhandene aktiviert. |
| figsize | Tupel (w, h) | Figure-Größe (in Zoll), z. B. (8, 6). Standard wird durch rcParams bestimmt. |
| dpi | float | Auflösung (Punkte pro Zoll), z. B. 100. Beeinflusst die Pixelgröße der Ausgabe. |
| facecolor | color | Hintergrundfarbe der Abbildung |
| edgecolor | color | Randfarbe der Abbildung |
| frameon | bool | Ob der Hintergrundrahmen der Figure angezeigt werden soll, Standard True |
| clear | bool | Wenn num bereits existiert, ob es vor der Verwendung zuerst geleert werden soll |
| layout | str oder LayoutEngine | EmpfohlenLayout-Engine: 'constrained', 'compressed', 'tight', 'none' |
Wird im Alltag selten direkt aufgerufen,
figure()häufigersubplots()erstellt die Figure und Axes in einem Aufruf. Die alleinige Verwendung von figure() ist hauptsächlich für Multi-Figure-Szenarien oder benutzerdefinierte Canvas-Eigenschaften gedacht.
Anwendungsbeispiele
Beispiel 1: Erstellen einer Figure mit benutzerdefinierter Größe
Beispiel
import numpy as np
# Erstelle eine Figure mit angegebener Größe und hoher DPI
fig = plt.figure(figsize=(10, 4), dpi=100,
facecolor='#f8f9fa',
layout='constrained')
# Subplots manuell hinzufügen
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)
x = np.linspace(0, 10, 100)
ax1.plot(x, np.sin(x), 'steelblue', linewidth=2)
ax1.set_title('Diagramm 1')
ax2.plot(x, np.cos(x), 'coral', linewidth=2)
ax2.set_title('Diagramm 2')
plt.show()
Beispiel 2: Mehrere Abbildungen verwalten
Beispiel
import numpy as np
x = np.linspace(0, 10, 100)
# Abbildung #1 erstellen
fig1 = plt.figure(1, figsize=(6, 4))
ax1 = fig1.subplots()
ax1.plot(x, np.sin(x), 'blue')
ax1.set_title('Abbildung 1: sin(x)')
# Abbildung #2 erstellen
fig2 = plt.figure(2, figsize=(6, 4))
ax2 = fig2.subplots()
ax2.plot(x, np.cos(x), 'red')
ax2.set_title('Abbildung 2: cos(x)')
# Aktiviere Abbildung #1 und arbeite weiter
plt.figure(1)
plt.plot(x, np.sin(2*x), '--', alpha=0.5)
# Speichere eine bestimmte Abbildung
fig1.savefig('example_fig1.png', dpi=150)
fig2.savefig('example_fig2.png', dpi=150)
print("Beispiel: zwei Abbildungen gespeichert")
plt.show()
Beispiel 3: Automatisches Layout mit dem layout-Parameter
Beispiel
import numpy as np
# Layout-Einstellungen vergleichen
# Ohne Verwendung von layout (Beschriftungen können sich überlappen)
fig1 = plt.figure(1, figsize=(8, 4))
for i in range(3):
ax = fig1.add_subplot(1, 3, i+1)
ax.plot(np.random.randn(50).cumsum())
ax.set_title(f'Diagramm {i+1}')
ax.set_xlabel('Eine sehr lange x-Achsenbeschriftung')
# Verwende layout='constrained' (behandelt Überlappungen automatisch)
fig2 = plt.figure(2, figsize=(8, 4), layout='constrained')
for i in range(3):
ax = fig2.add_subplot(1, 3, i+1)
ax.plot(np.random.randn(50).cumsum())
ax.set_title(f'Diagramm {i+1}')
ax.set_xlabel('Eine sehr lange x-Achsenbeschriftung')
plt.figure(1)
plt.suptitle('Ohne Layout', y=1.02)
plt.figure(2)
plt.suptitle('Mit layout="constrained"', y=1.02)
plt.show()
print("Beispiel: Layout-Einstellungen vergleichen")
FAQ
Was ist die Einheit von figsize?
Zoll. Tatsächliche Pixelgröße = figsize × dpi. Zum Beispielfigsize=(8,6), dpi=100erzeugt ein 800×600 Pixel großes Bild.
Welche Layout-Option ist am besten?
'constrained'ist die empfohlene Option für die meisten Szenarien und übernimmt automatisch die Abstände von Subplots und Beschriftungen.
'compressed'komprimiert die Ränder weiter, geeignet für Szenarien, die den Datenbereich maximieren müssen.
'none'verwendet kein automatisches Layout (Standard) und kann manuell über subplots_adjust() angepasst werden.
Andere Erweiterungen