Comparación de intervalos#
import matplotlib.pyplot as plt
plt.rc("figure", dpi=100, figsize=(6, 2)) # Aumenta la resolución de las figuras
Gráfico de intervalos#
En lugar de presentar valores en una tabla, donde es díficil evaluar a simple vista si todos coinciden:
Método |
Longitud [cm] |
---|---|
A |
1.54 ± 0.17 |
B |
1.62 ± 0.12 |
C |
1.30 ± 0.23 |
D |
1.49 ± 0.11 |
E |
1.84 ± 0.01 |
podemos representarlos de forma gráfica:
mediciones = [
(1.54, 0.17),
(1.62, 0.12),
(1.30, 0.23),
(1.49, 0.11),
(1.84, 0.01),
]
plt.xlabel("Longitud [cm]")
plt.ylabel("Método")
plt.ylim(-1, 5)
plt.yticks([0, 1, 2, 3, 4], ["A", "B", "C", "D", "E"])
for n, (x, dx) in enumerate(mediciones):
plt.errorbar(x=x, y=n, xerr=dx, capsize=5)
Es más facil ver que las primeras 4 mediciones son consistentes entre sí, mientras que la medicion E no se solapa con las demás.
Paso a paso#
La función plt.errorbar
grafica barras de errores,
para lo cual hay que pasarle:
la posición \((x, y)\) situar el centro de la barra
el ancho (
xerr
) o el altoyerr
de la barra
En este caso, usamos barras horizontales, por lo que:
x
es el centro de la medicionxerr
es el error de la medicion
nro_de_medicion = 1
medicion = 5
error = 1
plt.errorbar(x=medicion, xerr=error, y=nro_de_medicion)
<ErrorbarContainer object of 3 artists>
El valor para y
es irrelevante.
Pero,
para graficar multiples mediciones,
le asignamos un numero distinto a cada una,
para que esten separadas:
plt.errorbar(x=5, y=1, xerr=1)
plt.errorbar(x=6, y=2, xerr=2)
<ErrorbarContainer object of 3 artists>
Automaticamente,
le asigna un color distinto a cada una.
Si no,
pueden elegir el color manualmente con color=...
.
Para ver las distintas formas de elegir colores,
pueden ir a la documentación de matplotlib.
En la versión completa, le agregamos un par de cosas extras, como:
ponerle nombre (y unidades) a los ejes (¡IMPORTANTISIMO!) con
plt.xlabel
yplt.ylabel
,cambiar los limites en
y
conplt.ylim
, para que no queden tan pegadas a los bordes del gráfico,agregar las lineas al final del intervalo con
capsize=...
,ponerle nombre en lugar de numero a cada medicion en el eje
y
conplt.yticks
.
plt.errorbar(x=5, y=1, xerr=1, capsize=5)
plt.errorbar(x=6, y=2, xerr=2, capsize=5)
plt.ylim(0, 3)
plt.yticks([1, 2], ["A", "B"])
plt.xlabel("Magnitud [unidad]")
plt.ylabel("Método")
Text(0, 0.5, 'Método')