Introducción a los gráficos de datos en Python con Matplotlib

Ejes y mapeados

En esta segunda lección aprenderemos a:

  • Mapear texto en los ejes numéricos.
  • A trabajar con el eje X y el eje Y.
  • A crear gráficos con los ejes invertidos.

Mapeado de texto en los ejes

Por defecto en los gráficos no podemos mostrar texto en los ejes porque estos se basan en valores numéricos.

Lo que podemos hacer es mapear los textos a mostrar en una lista del mismo tamaño que el número de valores del eje (x para el horizontal e y para el vertical), utilizando los métodos xticks() o yticks():

# %%
import numpy as np
import matplotlib.pyplot as plt

ahorros = np.random.randint(100, size=[6])
meses = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio']
mapeado = range(len(meses))

plt.plot(ahorros)           # Añadimos el gráfico
plt.xticks(mapeado, meses)  # Mapeamos los valores horizontales
plt.show()                  # Finalmente lo mostramos

Eje X y eje Y

Bien, hasta ahora los gráficos que hemos visualizado los hemos creado a partir de vectores de una dimensión.

Al utilizar un único vector en el método .plot() éste lo toma como los valores del eje Y y genera el eje X automáticamente a partir de la longitud del vector.

Ahora bien, nosotros podemos decidir los valores del eje X si los pasamos en otro vector como primer parámetro:

# %%
x = np.arange(6)
y = np.random.randint(20, size=[6])

plt.plot(x, y)
plt.show()

Gráficos invertidos

Algo interesante es que cambiando el orden de los ejes podemos generar un gráfico invertido:

# %%
plt.plot(y, x)
plt.show()

Ejemplo curioso

Ahora bien, ¿qué ocurriría si los valores en X también fueran aleatorios?

# %%
x = np.random.randint(20, size=[6])
y = np.random.randint(20, size=[6])

plt.plot(x, y)
plt.show()

Pues como véis se genera un gráfico muy extraño.

Los gráficos lineales se rigen en función del tiempo, eso implica que uno de los ejes debe ser un valor incremental. Al generar valores aleatorios hemos "roto" completamente esa lógica y como resultado nos queda un gráfico donde las líneas se cruzan por todas partes.

La gracia de los gráficos es facilitar la comprensión en lugar de dificultarla así que deberíais evitar ejemplos como este.