HOWTO · Matplotlib

Python-Fehlerleiste

Man kann Daten mit Fehlerbalken mit der Funktion errorbar() von Matplotlib in Python darstellen.

Auf dieser Seite

Verwenden Sie Matplotlibs Funktion errorbar(), um Messwerte mit vertikaler Unsicherheit über yerr, mit horizontaler Unsicherheit über xerr oder mit beidem darzustellen. Die folgenden Beispiele verwenden feste Werte, damit Sie sehen, wie sich die einzelnen Argumente auf das Diagramm auswirken.

Fehlerbalken in Python

Ein Fehlerbalken zeigt die Größe der Unsicherheit eines dargestellten Messwerts. Ein Widerstand mit einer angegebenen Toleranz hat beispielsweise einen Bereich möglicher Werte statt eines garantiert exakten Einzelwerts. Im Diagramm veranschaulicht der Balken diesen Bereich um einen Datenpunkt; der Messwert selbst bleibt unverändert.

Führen Sie dieses Beispiel aus:

import matplotlib.pyplot as plt

x_values = [1, 2, 3, 4]
y_values = [1, 2, 3, 4]
y_error = [0.9, 0.5, 0.75, 0.25]

plt.errorbar(x_values, y_values, yerr=y_error)
plt.show()

Das Beispiel zeichnet vier Punkte mit vertikalen Fehlerbalken. yerr gibt die vertikale Fehlerausdehnung für jeden zugehörigen y-Wert an. Die Liste y_error enthält einen Wert pro Punkt, sodass die Längen den dargestellten Daten zugeordnet sind. Matplotlib akzeptiert auch eine gemeinsame skalare Ausdehnung oder ein Array mit zwei Zeilen für die unteren und oberen Ausdehnungen; jede Form muss die Anforderungen an die Datenform erfüllen. Verwenden Sie einen Skalar, wenn alle Punkte dieselbe symmetrische Unsicherheit haben, eine Folge, wenn jeder Punkt eine eigene symmetrische Unsicherheit hat, oder getrennte untere und obere Ausdehnungen bei asymmetrischer Unsicherheit. Das Diagramm enthält feste Listen und keine zufällig erzeugten Messwerte.

Um zusätzlich horizontale Unsicherheit darzustellen, übergeben Sie einen Wert für xerr. Das nächste Beispiel verwendet dieselben vier festen Punkte und weist jedem Punkt eine horizontale Ausdehnung von 0.5 zu. Die Fehlerbalken auf der x-Achse verlaufen dadurch horizontal, während yerr weiterhin vertikale Balken zeichnet.

import matplotlib.pyplot as plt

x_values = [1, 2, 3, 4]
y_values = [1, 2, 3, 4]
y_error = [0.9, 0.5, 0.75, 0.25]
x_error = [0.5, 0.5, 0.5, 0.5]

plt.errorbar(x_values, y_values, yerr=y_error, xerr=x_error, fmt="--ro", ms=10)
plt.show()

Die kompakte Formatzeichenfolge in fmt="--ro" kombiniert eine gestrichelte Linie (--), die Farbe Rot (r) und Kreismarkierungen (o). Mit fmt legen Sie Linienstil, Farbe und Markierung der Datenlinie fest. Wenn Sie mehr Kontrolle benötigen, können Sie stattdessen separate Plot-Optionen verwenden. Die Option ms bestimmt die Markierungsgröße. Für das Erscheinungsbild der Markierungen ändert mec (auch markeredgecolor) die Umrissfarbe, mfc (auch markerfacecolor) die Füllfarbe und mew (auch markeredgewidth) die Umrissbreite. Diese Optionen wirken sich auf die Datenmarkierungen aus, nicht auf die Fehlerbalken.

Für die Gestaltung der Fehlerbalken gibt es eigene Argumente. ecolor legt ihre Farbe fest; mit ecolor="g" werden sie beispielsweise grün. elinewidth bestimmt die Breite der Balkenlinien. capsize legt die Länge der kleinen Endstriche fest, und capthick bestimmt deren Stärke. Diese Endstriche markieren die Enden eines Fehlerbalkens; sie sind nicht mit den Datenmarkierungen zu verwechseln. Wählen Sie die Werte passend zur Skala und zur visuellen Gewichtung Ihres Diagramms, statt ein bestimmtes Standarderscheinungsbild vorauszusetzen.

Dieses Beispiel kombiniert diese Einstellungen mit denselben Daten sowie der gleichen Linien- und Markierungsgestaltung:

import matplotlib.pyplot as plt

x_values = [1, 2, 3, 4]
y_values = [1, 2, 3, 4]
y_error = [0.9, 0.5, 0.75, 0.25]
x_error = [0.5, 0.5, 0.5, 0.5]

plt.errorbar(
    x_values,
    y_values,
    yerr=y_error,
    xerr=x_error,
    fmt="--ro",
    ms=10,
    ecolor="g",
    elinewidth=3,
    capsize=10,
    capthick=3,
)
plt.show()

Bei vielen Datenpunkten können Fehlerbalken an jedem Punkt das Diagramm schwerer lesbar machen. Mit errorevery wählen Sie aus, an welchen Datenpunkten Fehlerbalken erscheinen, während Datenlinie und Markierungen erhalten bleiben. errorevery=2 zeigt zum Beispiel an abwechselnden Punkten Balken an, beginnend mit dem ersten Punkt der Reihe. Das Argument verändert die Position der Fehlerbalken, nicht die zugrunde liegenden Daten oder die Linie. Sie können eine ganzzahlige Schrittweite oder ein Paar aus Startposition und Schrittweite angeben, wenn die Auswahl versetzt beginnen soll.

Führen Sie dieses Beispiel aus, um abwechselnd Fehlerbalken anzuzeigen und dabei Datenlinie und Kreismarkierungen beizubehalten:

import matplotlib.pyplot as plt

x_values = [1, 2, 3, 4]
y_values = [1, 2, 3, 4]
y_error = [0.9, 0.5, 0.75, 0.25]

plt.errorbar(x_values, y_values, yerr=y_error, fmt="-o", errorevery=2)
plt.show()

Wählen Sie die Optionen passend zu den Informationen in Ihren Daten: Verwenden Sie yerr für Unsicherheit bei der vertikalen Messgröße, xerr für Unsicherheit bei der horizontalen Messgröße und beide Argumente, wenn beide Größen unsicher sind. Ordnen Sie jeden Fehlerwert dem beschriebenen Punkt zu. Geben Sie bei asymmetrischer Unsicherheit getrennte untere und obere Ausdehnungen an und passen Sie anschließend fmt, die Markierungsoptionen und die Gestaltung der Fehlerbalken für eine gute Lesbarkeit an. Wirkt das Diagramm überladen, kann errorevery die Zahl der angezeigten Balken verringern, ohne die dargestellten Messpunkte zu verwerfen.