Nota
Haga clic aquí para descargar el código de ejemplo completo
Creando cuadros a partir de barras de error usando PatchCollection #
En este ejemplo, creamos un gráfico de barras de error bastante estándar agregando un parche rectangular definido por los límites de las barras en las direcciones x e y. Para hacer esto, tenemos que escribir nuestra propia función personalizada llamada make_error_boxes
. Una inspección minuciosa de esta función revelará el patrón preferido al escribir funciones para matplotlib:
un
Axes
objeto se pasa directamente a la funciónla función opera en los
Axes
métodos directamente, no a través de lapyplot
interfaztrazar argumentos de palabras clave que podrían abreviarse se explican para una mejor legibilidad del código en el futuro (por ejemplo, usamos facecolor en lugar de fc )
los artistas devueltos por los
Axes
métodos de trazado son devueltos por la función para que, si se desea, sus estilos se puedan modificar más adelante fuera de la función (no se modifican en este ejemplo).
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()
Referencias
En este ejemplo se muestra el uso de las siguientes funciones, métodos, clases y módulos: