Pon un poco de color en los gráficos de Python

Photo by Joyce McCown on Unsplash

Hoy en la Buhardilla vamos a ver como incorporar un mapa de color en los gráficos de Python (utilizando la librería para la visualización de datos Matplotlib). Cuando trabajamos con gráficos en dos dimensiones, en alguna ocasión es más que probable que fuera necesario vincular los valores mostrados con una tercera variable no mostrada. La manera más fácil de conseguir dicha representación (sin recurrir a gráficos en 3D) es mediante la incorporación de un mapa de color, también conocido como barra de color. Al usar esta técnica, los puntos del gráfico se colorean en función del valor de la tercera variable. De esta manera es posible añadir información extra e importante a nuestros gráficos de manera muy comprensible. ¡Sin más dilación, empezamos!

Para poder realizar los gráficos, en este caso he utilizado una base de datos de cerveza en la que se encuentra información del grado de alcohol, amargor y cuerpo de un gran número de cervezas. La base de datos la podemos encontrar aquí. Dicha base de datos es gigantesca, a efectos de la entrada de este blog solo voy a usar 250 valores. Si graficamos el grado alcohólico de la cerveza con su cuerpo el resultado que obtenemos es el siguiente.

Como se puede ver en el gráfico anterior, se podría establecer cierta relación con el grado alcohólico y el cuerpo de la cerveza. Pero la información que obtenemos tampoco es muy relevante. En el caso de querer indicar también el grado de amargor (IBU) lo podemos hacer a partir de una barra de color. En este caso el mismo gráfico modificado se vería así.

El código para poder realizar el gráfico mostrado arriba es el siguiente.

import pandas as pd
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

df = pd.read_csv('beer_profile_and_ratings.csv', delimiter=',')

df = df[['ABV', 'Min IBU', 'Body']].head(250)
df.dropna(how='all', inplace=True)

plt.scatter(df['ABV'], df['Body'], c=df['Min IBU'], edgecolor='k', linewidth=0.7)
plt.colorbar(label='IBU', location='top', aspect=40)


plt.xlabel('Grado Alcohólico (%)')
plt.ylabel('Cuerpo')
plt.tight_layout()
plt.show()

Del código anterior, la parte de importar y leer el fichero csv está explicada en una entrada anterior. Así como la creación y edición del gráfico que se puede encontrar aquí. De esta manera, la parte que nos interesa ahora y la que nos va a permitir crear el gráfico con la barra de color es el siguiente:

plt.scatter(df['ABV'], df['Body'], c=df['Min IBU'], edgecolor='k', linewidth=0.7)
plt.colorbar(label='IBU', location='top', aspect=40)

En la línea 11 creamos los puntos a usando como valores de ‘x’ la columna ‘ABV’ de la base de datos. En el caso de los datos de ‘y’ vamos a utilizar el valor de ‘Body’ de la base de datos. Finalmente, para definir los valores que se van a emplear en la escala de colores, definimos la columna de la base de datos a utilizar. En este caso la variable es ‘c’ (de colormap) y para dar color utilizaremos los valores de la columna ‘Min IBU’. Para que la barra de color apareza en la imagen, es necesario crearla, para esta finalidad usamos la función plt.colorbar(). Al generar la barra de color es el momento de definir alguno de sus parámetros, como el nombre que se mostrará (label) la posición en la que aparecerá (locación) y la relación entre el largo y ancho de la muestra (aspect). Finalmente, para garantizar que el gráfico encaja perfectamente en la imagen, utilizamos la función plt.tight_layout().

Como hemos visto, es muy fácil incorporar la barra de color en nuestros gráficos. Espero que esta entrada os sea de ayuda para poder utilizar los mapas de color en los gráficos realizados con Matplotlib. Pudiendo de esta manera mejorar la presentación y la visualización de los datos.

Un saludo y hasta la próxima aventura!!!

Deja un comentario

Blog de WordPress.com.

Subir ↑