Matplotlib errorbar()-Funktion


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

ParameterTypeBeschreibung
x, yarray-ähnlichDatenpunktkoordinaten
yerr / xerrfloat oder array-ähnlichFehler 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.
fmtstrFormatzeichenfolge für Datenpunkte, z. B. 'o' (Kreis), 's' (Quadrat), 'o-' (Kreis + Linie).
ecolorcolorFarbe der Fehlerbalkenlinien.
elinewidthfloatBreite der Fehlerbalkenlinien.
capsizefloatLänge der Fehlerbalken-Endlinien (in Punkten).
capthickfloatDicke der Fehlerbalken-Endlinien.
barsaboveboolWenn True, werden Fehlerbalken über den Datenpunkten gezeichnet.
lolims / uplimsarray-ähnlich von boolMarkiere die untere/obere Grenze in y-Richtung (nur einseitige Pfeile).
xlolims / xuplimsarray-ähnlich von boolMarkiere die untere/obere Grenze in x-Richtung.
erroreveryintZeichne Fehlerbalken alle paar Datenpunkte (reduziert visuelle Überladung bei dichten Daten).

errorbar() gibt einErrorbarContainerObjekt zurück, das(plotline, caplines, barlinecols)separaten Zugriff auf die Hauptlinie und die Fehlerbalkenlinien ermöglicht.


Anwendungsbeispiele

Beispiel 1: Einfache Fehlerbalken

Beispiel

import matplotlib.pyplot as plt
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 matplotlib.pyplot as plt
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 matplotlib.pyplot as plt
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 matplotlib.pyplot as plt
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.


Matplotlib 参考文档Matplotlib-Referenzdokumentation

Andere Erweiterungen