Matplotlib errorbar()-Funktion
Matplotlib-Referenzdokumentation
errorbar()Wird verwendet, um Liniendiagramme mit Fehlerbalken zu zeichnen, die den Unsicherheitsbereich der Messwerte an den Datenpunkten anzeigen.
Weit verbreitet in wissenschaftlichen Experimenten, statistischer Analyse und Visualisierung technischer Daten.
Funktionsdefinition
pyplot-Schnittstelle
matplotlib.pyplot.errorbar(x, y, yerr=None, xerr=None, fmt='',
ecolor=None, elinewidth=None, capsize=None, barsabove=False,
lolims=False, uplims=False, xlolims=False, xuplims=False,
errorevery=1, capthick=None, *, **kwargs)
Axes-Schnittstelle
Axes.errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None,
elinewidth=None, capsize=None, barsabove=False, lolims=False,
uplims=False, xlolims=False, xuplims=False, errorevery=1,
capthick=None, *, **kwargs)
Parameterbeschreibung
| Parameter | Type | Beschreibung |
|---|---|---|
| x, y | array-ähnlich | Datenpunktkoordinaten |
| yerr / xerr | float oder array-ähnlich | Fehler in y-/x-Richtung. Ein Skalar bedeutet denselben Fehler für alle Punkte; ein Array bedeutet unabhängige Fehler für jeden Punkt. Ein 2D-Array kann untere und obere Fehler als [lo, hi] angeben. |
| fmt | str | Formatzeichenfolge für Datenpunkte, z. B. 'o' (Kreis), 's' (Quadrat), 'o-' (Kreis + Linie). |
| ecolor | color | Farbe der Fehlerbalkenlinien. |
| elinewidth | float | Breite der Fehlerbalkenlinien. |
| capsize | float | Länge der Fehlerbalken-Endlinien (in Punkten). |
| capthick | float | Dicke der Fehlerbalken-Endlinien. |
| barsabove | bool | Wenn True, werden Fehlerbalken über den Datenpunkten gezeichnet. |
| lolims / uplims | array-ähnlich von bool | Markiere die untere/obere Grenze in y-Richtung (nur einseitige Pfeile). |
| xlolims / xuplims | array-ähnlich von bool | Markiere die untere/obere Grenze in x-Richtung. |
| errorevery | int | Zeichne Fehlerbalken alle paar Datenpunkte (reduziert visuelle Überladung bei dichten Daten). |
errorbar() gibt ein
ErrorbarContainerObjekt zurück, das(plotline, caplines, barlinecols)separaten Zugriff auf die Hauptlinie und die Fehlerbalkenlinien ermöglicht.
Anwendungsbeispiele
Beispiel 1: Einfache Fehlerbalken
Beispiel
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([3.5, 5.2, 4.8, 6.1, 7.3])
y_err = np.array([0.3, 0.5, 0.4, 0.6, 0.5]) # Fehler für jeden Punkt
fig, ax = plt.subplots(layout='constrained')
# Liniendiagramm mit Fehlerbalken zeichnen
ax.errorbar(x, y, yerr=y_err,
fmt='o-', # Kreise + Linie
color='steelblue',
ecolor='gray', # Farbe der Fehlerbalken
elinewidth=1.5, # Linienbreite der Fehlerbalken
capsize=5, # Länge der Kappenlinie
capthick=1.5,
markersize=8,
label='Messung')
ax.set_title('Fehlerbalkendiagramm mit y-Fehlern')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.legend()
ax.grid(True, alpha=0.3)
plt.show()
Beispiel 2: Ungleiche Fehler (unterschiedliche obere und untere)
Beispiel
import numpy as np
x = np.arange(5)
y = np.array([10, 12, 9, 15, 13])
# 2D-Array: Erste Zeile ist untere Fehlergrenze, zweite Zeile ist obere Fehlergrenze
y_err = np.array([[0.5, 0.8, 0.6, 1.0, 0.7], # Unterer Fehler
[1.5, 1.2, 2.0, 0.8, 1.3]]) # Oberer Fehler
fig, ax = plt.subplots(layout='constrained')
ax.errorbar(x, y, yerr=y_err,
fmt='s', # Quadratischer Marker, keine Linie
color='coral',
ecolor='black',
capsize=6,
markersize=10,
markerfacecolor='white',
markeredgewidth=1.5,
label='Asymmetrischer Fehler')
ax.set_title('Asymmetrische Fehlerbalken (unterschiedliche obere/untere)')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.legend()
ax.grid(True, alpha=0.3)
plt.show()
Beispiel 3: Bidirektionale Fehlerbalken (Fehler in x- und y-Richtung)
Beispiel
import numpy as np
np.random.seed(42)
x = np.arange(8)
y = 2 * x + 1 + np.random.randn(8) * 2
x_err = np.full(8, 0.3) # Fehler in x-Richtung (für alle Punkte gleich)
y_err = np.random.rand(8) * 3 # Fehler in y-Richtung (für jeden Punkt unterschiedlich)
fig, ax = plt.subplots(figsize=(7, 5), layout='constrained')
ax.errorbar(x, y,
xerr=x_err, # Fehler in x-Richtung
yerr=y_err, # Fehler in y-Richtung
fmt='o',
color='#8e44ad',
ecolor='gray',
capsize=4,
markersize=8,
label='2D-Fehler')
ax.set_title('Fehlerbalken in X- und Y-Richtung')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.legend()
ax.grid(True, alpha=0.3)
plt.show()
Beispiel 4: Verwendung von errorevery zur Reduzierung von visuellem Durcheinander
Beispiel
import numpy as np
# Dichte Datenpunkte (100 Punkte)
x = np.linspace(0, 10, 100)
y = np.sin(x) + np.random.randn(100) * 0.1
y_err = np.full(100, 0.15)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4),
layout='constrained')
# Linker Plot: Fehlerbalken für jeden Punkt anzeigen (zu dicht)
ax1.errorbar(x, y, yerr=y_err, fmt='o', markersize=3,
capsize=2, elinewidth=0.5, errorevery=1)
ax1.set_title('errorevery=1 (zu dicht)')
# Rechter Plot: an jedem 8. Punkt einen Fehlerbalken anzeigen
ax2.errorbar(x, y, yerr=y_err, fmt='o', markersize=3,
capsize=2, elinewidth=0.5, errorevery=8)
ax2.set_title('errorevery=8 (sauberer)')
for ax in [ax1, ax2]:
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.grid(True, alpha=0.3)
plt.show()
Häufig gestellte Fragen
Verschiedene Formen von yerr?
Skalar: gleicher Fehler für alle Punkte.
1D-Array (N,): symmetrischer Fehler für jeden Punkt (oberer und unterer sind gleich).
2D-Array (2, N): erste Zeile ist unterer Fehler, zweite Zeile ist oberer Fehler.
Was tun, wenn Sie keine Linien zwischen Datenpunkten möchten?
wirdfmtLegen Sie ein Nur-Marker-Format fest, z. B.,'o'、's'、'^', wobei der Linienstil-Teil weggelassen wird.
Andere Erweiterungen