Notiz
Klicken Sie hier , um den vollständigen Beispielcode herunterzuladen
Erstellen von Boxen aus Fehlerbalken mit PatchCollection #
In diesem Beispiel schnappen wir uns ein ziemlich standardmäßiges Fehlerbalkendiagramm, indem wir ein rechteckiges Patch hinzufügen, das durch die Grenzen der Balken in x- und y-Richtung definiert ist. Dazu müssen wir unsere eigene benutzerdefinierte Funktion namens schreiben make_error_boxes
. Eine genaue Betrachtung dieser Funktion zeigt das bevorzugte Muster beim Schreiben von Funktionen für matplotlib:
ein
Axes
Objekt wird direkt an die Funktion übergebenDie Funktion arbeitet
Axes
direkt mit den Methoden, nicht über diepyplot
SchnittstellePlotten von Schlüsselwortargumenten, die abgekürzt werden könnten, werden für eine bessere Lesbarkeit des Codes in der Zukunft ausgeschrieben (z. B. verwenden wir facecolor anstelle von fc )
Die von den
Axes
Plot-Methoden zurückgegebenen Künstler werden dann von der Funktion zurückgegeben, sodass ihre Stile, falls gewünscht, später außerhalb der Funktion geändert werden können (in diesem Beispiel werden sie nicht geändert).
import numpy as np
import matplotlib.pyplot as plt
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()
Verweise
In diesem Beispiel wird die Verwendung der folgenden Funktionen, Methoden, Klassen und Module gezeigt: