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

  1. an Axes-Objekt wird direkt an die Funktion übergeben

  2. die Funktion arbeitet direkt auf den Axes-Methoden, nicht über die pyplot-Schnittstelle

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

  4. 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()
errorbars and boxes

Tags: plot-type: errorbar component: rectangle component: patchcollection domain: statistics

Referenzen

Die Verwendung der folgenden Funktionen, Methoden, Klassen und Module wird in diesem Beispiel gezeigt

Galerie generiert von Sphinx-Gallery