Matplotlib figure()-Funktion


Matplotlib 参考文档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

ParameterTypeBeschreibung
numint oder strFigure-Bezeichner. Ganzzahlen sind Zahlen, Strings sind Beschriftungen. Wenn er nicht existiert, wird ein neuer erstellt; wenn er existiert, wird der vorhandene aktiviert.
figsizeTupel (w, h)Figure-Größe (in Zoll), z. B. (8, 6). Standard wird durch rcParams bestimmt.
dpifloatAuflösung (Punkte pro Zoll), z. B. 100. Beeinflusst die Pixelgröße der Ausgabe.
facecolorcolorHintergrundfarbe der Abbildung
edgecolorcolorRandfarbe der Abbildung
frameonboolOb der Hintergrundrahmen der Figure angezeigt werden soll, Standard True
clearboolWenn num bereits existiert, ob es vor der Verwendung zuerst geleert werden soll
layoutstr oder LayoutEngineEmpfohlenLayout-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 matplotlib.pyplot as plt
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 matplotlib.pyplot as plt
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 matplotlib.pyplot as plt
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.


Matplotlib 参考文档Matplotlib-Referenzdokumentation

Andere Erweiterungen