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/af885d49b37a1019b6e339f48b760e69a7d5a0bf7b63d542fe48c0efb8943bf4.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/7ef7890ef6eb2ac63382b75a79f9a42ef573a365ee642735e23efd7edb329029.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/b460ef623d6143d6122a7b9b055339ec992eedb83a5f5082f4bc6e9c01db854b.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/fd7adcfd6b418e4899201656040c895df0efca5d283652a883d5658784f8d3bc.png