Comparación de intervalos

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)
../_images/25102a4aac2315b81f741f557ee0ae1f7fbd2fee57fc66eaea6654545d990b7f.png

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 alto yerr de la barra

En este caso, usamos barras horizontales, por lo que:

  • x es el centro de la medicion

  • xerr 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>
../_images/a7cce33a0e6700a4b84111b9aa84f681ed6be8477011684c7d99cd5bea8136e5.png

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>
../_images/2cefd9eab899d19a72e82cd77380e5a173c7492a2326f1551fab0039962db511.png

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 y plt.ylabel,

  • cambiar los limites en y con plt.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 con plt.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')
../_images/2c629e8b52e7e3fa202a340fe7aa4fd9861f8464d75a8a3144c5bf0caaffa33a.png