Hinweis
Zum Ende springen, um den vollständigen Beispielcode herunterzuladen.
Erstellen von Boxen aus Fehlerbalken mit PatchCollection#
In diesem Beispiel verschönern wir einen ziemlich Standard-Fehlerbalken-Plot, indem wir eine Rechteck-Fläche hinzufügen, die durch die Grenzen der Balken in sowohl x- als auch y-Richtung definiert ist. Dazu müssen wir unsere eigene benutzerdefinierte Funktion namens make_error_boxes schreiben. Eine genaue Untersuchung dieser Funktion wird das bevorzugte Muster beim Schreiben von Funktionen für Matplotlib enthüllen
an
Axes-Objekt wird direkt an die Funktion übergebendie Funktion arbeitet direkt auf den
Axes-Methoden, nicht über diepyplot-SchnittstellePlot-Schlüsselwortargumente, die abgekürzt werden könnten, werden für eine bessere Lesbarkeit des Codes in Zukunft ausgeschrieben (zum Beispiel verwenden wir facecolor anstelle von fc)
die von den
Axes-Plot-Methoden zurückgegebenen Künstler werden dann von der Funktion zurückgegeben, so dass, wenn gewünscht, ihre Stile später außerhalb der Funktion geändert werden können (sie werden in diesem Beispiel nicht geändert).
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.collections import PatchCollection
from matplotlib.patches import Rectangle
# Number of data points
n = 5
# Dummy data
np.random.seed(19680801)
x = np.arange(0, n, 1)
y = np.random.rand(n) * 5.
# Dummy errors (above and below)
xerr = np.random.rand(2, n) + 0.1
yerr = np.random.rand(2, n) + 0.2
def make_error_boxes(ax, xdata, ydata, xerror, yerror, facecolor='r',
edgecolor='none', alpha=0.5):
# Loop over data points; create box from errors at each point
errorboxes = [Rectangle((x - xe[0], y - ye[0]), xe.sum(), ye.sum())
for x, y, xe, ye in zip(xdata, ydata, xerror.T, yerror.T)]
# Create patch collection with specified colour/alpha
pc = PatchCollection(errorboxes, facecolor=facecolor, alpha=alpha,
edgecolor=edgecolor)
# Add collection to Axes
ax.add_collection(pc)
# Plot errorbars
artists = ax.errorbar(xdata, ydata, xerr=xerror, yerr=yerror,
fmt='none', ecolor='k')
return artists
# Create figure and Axes
fig, ax = plt.subplots(1)
# Call function to create error boxes
_ = make_error_boxes(ax, x, y, xerr, yerr)
plt.show()
Referenzen
Die Verwendung der folgenden Funktionen, Methoden, Klassen und Module wird in diesem Beispiel gezeigt