Matplotlib fill_between() / fill_betweenx()-Funktion
Matplotlib-Referenzdokumentation
fill_between()Wird verwendet, um den Bereich zwischen zwei horizontalen Kurven zu füllen,fill_betweenx()Füllt den Bereich zwischen zwei vertikalen Kurven.
Wird häufig verwendet, um Konfidenzintervalle, Unsicherheitsbereiche, Differenzbereiche usw. zu visualisieren.
Funktionsdefinition
matplotlib.pyplot.fill_between(x, y1, y2=0, where=None,
interpolate=False, step=None, **kwargs)
matplotlib.pyplot.fill_betweenx(y, x1, x2=0, where=None,
interpolate=False, step=None, **kwargs)
Parameterbeschreibung
| Parameter | Type | Beschreibung |
|---|---|---|
| x / y | array | Datenpunkte der ersten Koordinatenachse |
| y1, y2 / x1, x2 | Array oder Skalar | Zwei Kurven. Ein Skalar stellt eine konstante Linie dar. y2 ist standardmäßig 0 und füllt bis zur x-Achse. |
| wobei | Array aus bool | Gibt an, welche Intervalle gefüllt werden müssen. True füllt, False füllt nicht. |
| interpolate | bool | Wenn True, interpolieren, um präzise Grenzen an Kurvenschnittpunkten zu berechnen. |
| Schrittweite | str | Schrittfüllung: 'pre', 'post', 'mid' |
| color / facecolor | color | Füllfarbe |
| Alpha | float | Transparenz |
| label | str | Legendenbeschriftung |
| hatch | str | Füllmuster: '/'、'\'、'|'、'-'、'+'、'x'、'*' |
fill_between und fill_betweenx geben ein
PolyCollectionObjekt zurück, das für spätere Änderungen verwendet oder an colorbar übergeben werden kann
Anwendungsbeispiele
Beispiel 1: Füllen bis zur x-Achse (Standard y2=0)
Beispiel
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots(layout='constrained')
# Die Hauptkurve plotten
ax.plot(x, y, 'b-', linewidth=2, label='sin(x)')
# Fläche zwischen der Kurve und der x-Achse füllen
ax.fill_between(x, y, alpha=0.3, color='blue',
label='Fläche unter der Kurve')
ax.set_title('fill_between: Fläche zwischen Kurve und X-Achse')
ax.set_xlabel('x')
ax.set_ylabel('sin(x)')
ax.legend()
ax.grid(True, alpha=0.3)
plt.show()
Beispiel 2: Konfidenzintervall (Fläche zwischen zwei Kurven)
Beispiel
import numpy as np
x = np.linspace(0, 10, 100)
y_mean = np.sin(x) + 5 # Mittelwertlinie
y_std = 0.3 + 0.1 * x # Standardabweichung nimmt mit x zu
# Obere und untere Grenzen
y_upper = y_mean + y_std
y_lower = y_mean - y_std
fig, ax = plt.subplots(figsize=(8, 5), layout='constrained')
# Konfidenzintervall auf beiden Seiten des Mittelwerts füllen
ax.fill_between(x, y_lower, y_upper,
alpha=0.3, color='steelblue',
label='Konfidenzintervall')
# Mittelwertlinie zeichnen
ax.plot(x, y_mean, 'steelblue', linewidth=2, label='Mittelwert')
# Obere und untere Grenzen zeichnen
ax.plot(x, y_upper, 'steelblue', linewidth=0.5, Alpha=0.5)
ax.plot(x, y_lower, 'steelblue', linewidth=0.5, Alpha=0.5)
ax.set_title('Konfidenzintervall (fill_between)')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.legend()
ax.grid(True, alpha=0.3)
plt.show()
Beispiel 3: Bedingtes Füllen mit dem where-Parameter
Beispiel
import numpy as np
x = np.linspace(0, 10, 200)
y1 = np.sin(x)
y2 = np.cos(x)
fig, ax = plt.subplots(figsize=(8, 5), layout='constrained')
ax.plot(x, y1, 'blue', label='sin(x)')
ax.plot(x, y2, 'red', label='cos(x)')
# Nur füllen, wo sin(x) >= cos(x)
ax.fill_between(x, y1, y2,
where=(y1 >= y2), # Bedingung: füllen, wenn y1 größer als y2 ist
color='blue', alpha=0.3,
label='sin ≥ cos')
# Nur füllen, wo sin(x) < cos(x) (mit einer anderen Farbe)
ax.fill_between(x, y1, y2,
where=(y1 < y2),
color='red', alpha=0.3,
label='sin < cos')
ax.set_title('Bedingtes Füllen mit where-Parameter')
ax.set_xlabel('x')
ax.legend()
ax.grid(True, alpha=0.3)
plt.show()
Beispiel 4: fill_betweenx vertikale Füllung
Beispiel
import numpy as np
# Die Argumentreihenfolge für fill_betweenx ist (y, x1, x2)
y = np.linspace(0, 10, 100)
x1 = 2 + np.sin(y)
x2 = 4 + np.cos(y) * 0.5
fig, ax = plt.subplots(figsize=(6, 6), layout='constrained')
ax.fill_betweenx(y, x1, x2, alpha=0.4, color='coral')
ax.plot(x1, y, 'red', linewidth=1.5, label='x1(y)')
ax.plot(x2, y, 'darkred', linewidth=1.5, label='x2(y)')
ax.set_title('fill_betweenx: Vertikale Füllung')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.legend()
plt.show()
Häufig gestellte Fragen
Sind die Datenpunkte für den where-Parameter nicht glatt genug?
Wenn die gefüllte Fläche an True/False-Grenzen ungenau ist, setzen Sieinterpolate=TrueEs kann interpolieren, um präzise Grenzen an Schnittpunkten zu berechnen.
Was ist der Unterschied zwischen fill_between und stackplot?
fill_between()Füllt zwischen zwei bestimmten Kurven, geeignet zum Anzeigen von Unterschieden oder Konfidenzintervallen.
stackplot()Stapelt mehrere Kurven Schicht für Schicht von 0 aus, geeignet zum Anzeigen der kumulierten Gesamtsumme jedes Teils.
Andere Erweiterungen