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:

  1. ein AxesObjekt wird direkt an die Funktion übergeben

  2. Die Funktion arbeitet Axesdirekt mit den Methoden, nicht über die pyplotSchnittstelle

  3. Plotten 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 )

  4. Die von den AxesPlot-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()
Fehlerbalken und Boxen

Verweise

In diesem Beispiel wird die Verwendung der folgenden Funktionen, Methoden, Klassen und Module gezeigt:

Galerie generiert von Sphinx-Gallery