Python

Creación de gráficos de barras y gráficos de columnas con Seaborn

Los gráficos de barras y los gráficos de columnas son una forma altamente efectiva de visualizar datos categóricos. Permitiendo comparar los valores asociados a cada categoría. Seaborn, una de las principales bibliotecas de visualización de datos en Python, ofrece varias funciones para crear este tipo de gráficos. En esta entrada, se mostrará las principales opciones que existen para crear gráficos de barras y gráficos de columnas con Seaborn. Se mostrará cómo representar variables categóricas en el eje x, valores numéricos en el eje y, y personalizar los gráficos para resaltar la información clave.

Carga de datos de ejemplo

Antes de poder crear gráficos de barras o gráficos de columnas con Seaborn, es necesario importar un conjunto de datos en un DataFrame de Pandas. Para hacer más fácil que cualquier lector pueda repetir los ejemplos se utilizará el conjunto de datos “tips” que viene con Seaborn. Este conjunto de datos contiene información sobre propinas en un restaurante. Para cargarlo en un DataFrame de Pandas se puede utilizar el siguiente código.

import seaborn as sns

# Cargar el conjunto de datos "tips"
tips_data = sns.load_dataset("tips")

# Imprimir los primeros registros del conjunto de datos
print(tips_data.head())
   total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4

Creación de gráficos de barras

Los gráficos de barras son ideales para mostrar los valores asociados con diferentes categorías de datos. La función para crear este tipo de gráficos Seaborn es barplot(). Una función que necesita los datos en un DataFrame de Pandas, indicado mediante el parámetro data, la variable categórica, iniciada mediante el parámetro x, y los valores que se desean mostrar, lo que se indica mediante el parámetro y. Para crear una gráfica de barras en la que se muestre el promedio de la columna total_bill para cada uno de los días se la semana (variable days) se puede usar el siguiente código.

import matplotlib.pyplot as plt

# Crear un gráfico de barras de la columna "day" y "total_bill" promedio
sns.barplot(data=tips_data, x='day', y='total_bill', errorbar=None)

# Mostrar el gráfico
plt.show()
Gráfico de barras creado con Seaborn

Como se explicó en la introducción de esta serie, los gráficos de barras muestran por defecto el promedio de la variable indicada y agregan a cada una de las barras una línea con el error. Para evitar que se muestre esta línea se debe indicar mediante el parámetro errorbar asignando el valor None.

Creación de gráficos de columnas

Los gráficos de columnas son similares a los gráficos de barras, pero muestran las barras de manera horizontal en lugar de vertical. Para conseguir estas gráficas en Seaborn también se tiene que utilizar la función barplot() pero usando la propiedad orient para indicar que la orientación debe ser horizontal con el valor 'horizontal'. Así, se puede repetir la gráfica anterior como un gráfico de columnas simplemente agregando esta propiedad como se muestra a continuación.

# Crear un gráfico de columnas de la columna "day" y "total_bill" promedio
sns.barplot(data=tips_data, y='day', x='total_bill', orient='horizontal', errorbar=None)

# Mostrar el gráfico
plt.show()
Gráfico de columnas creado con Seaborn

Personalización de gráficos de barras y gráficos de columnas con Seaborn

Seaborn ofrece una amplia gama de opciones de personalización para adaptar los gráficos de barras y gráficos de columnas a las necesidades de todos los usuarios. Es posible ajustar los colores, agregar etiquetas, cambiar los estilos, entre otras opciones.

Cambiar los colores de las barras o columnas

Es posible personalizar los colores de las barras o columnas utilizando la opción palette en la función barplot(). Por ejemplo, puedes utilizar una paleta de colores predefinida de Seaborn, como "Set2".

# Crear un gráfico de barras con colores personalizados
sns.barplot(data=tips_data, x='day', y='total_bill', palette='Set2', errorbar=None)

# Mostrar el gráfico
plt.show()
Gráfico de barras en el que se ha modificado los colores por defecto

Agregar etiquetas a las barras o columnas

También es posible agregar etiquetas a las barras o columnas para mostrar los valores asociados utilizando la función annotate() de Matplotlib. A continuación, se muestra un ejemplo de cómo hacerlo.

# Crear un gráfico de barras con etiquetas personalizadas
ax = sns.barplot(data=tips_data, x='day', y='total_bill', errorbar=None)

# Agregar etiquetas a las barras
for p in ax.patches:
    ax.annotate(format(p.get_height(), '.2f'), (p.get_x() + p.get_width() / 2., p.get_height()), ha = 'center', va = 'center', xytext = (0, 10), textcoords = 'offset points')

# Mostrar el gráfico
plt.show()
Gráfico de barras con etiquetas con el valor mostrado

En este ejemplo, la función annotate() para agregar etiquetas al centro de cada barra. Mediante el formato '.2f' se especifica que se desea mostrar los valores con dos decimales.

Ajustar el tamaño de las barras o columnas

El tamaño de las barras o columnas empleadas en el gráfico se puede modificar mediante el parámetro linewidth de la función barplot(). Por ejemplo, se puede aumentar el ancho de las barras a 2 puntos con el siguiente código. Para que se puedan apreciar los cambios es necesario cambiar el estilo de la gráfica, para lo que se debe usar la función `set_style()` de Seaborn.

# Establecer el estilo del gráfico
sns.set_style('darkgrid')

# Crear un gráfico de barras con barras más anchas
sns.barplot(data=tips_data, x='day', y='total_bill', palette='Set2' , linewidth=2, errorbar=None)

# Mostrar el gráfico
plt.show()
Gráfico de barras con los colores cambiados y el ancho de las barras

Mostrar otros estadísticos en las barras o columnas

Por defecto la función barplot() muestra la media de los valores, pero esto es algo que se puede cambiar mediante el parámetro estimator. En lugar de la media se puede usar valores como la suma, la media o el valor máximo. Así para ver la propina máxima por día se puede usar el siguiente código.

# Crear un gráfico de barras de la columna "day" y "total_bill" promedio
sns.barplot(data=tips_data, x='day', y='total_bill', estimator=max, errorbar=None)

# Mostrar el gráfico
plt.show()
Gráfico de barras en el que se muestra el valor máximo, no la media

Conclusiones

Los gráficos de barras y gráficos de columnas es una parte fundamental del análisis de datos. Siendo también una parte clave de la comunicación visual de resultados. La creación de gráficos de barras y gráficos de columnas con Seaborn es una tarea sencilla gracias a la función barplot(). Una función que cuenta con múltiples opciones para hacer que los gráficos generados sean exactamente los que se necesitan.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Seaborn

Recent Posts

Subplots en Matplotlib: cómo organizar múltiples gráficos en una sola figura

Llevas un rato analizando datos y tienes cuatro gráficos abiertos en ventanas separadas: ventas, usuarios,…

10 horas ago

Síndrome del objeto brillante en ciencia de datos: el error simétrico a los costes hundidos

Hace poco publiqué una entrada en la que trataba de un sesgo bien documentado: aferrarse…

5 días ago

De la Regresión Logística al Scorecard: La Transformación Matemática

En un entrada previa explicamos qué son el WOE y el IV y por qué…

1 semana ago

Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring

Seguimos evolucionando el laboratorio de Analytics Lane y hoy lanzamos la versión 1.1, disponible en:…

1 semana ago

Interés compuesto: la fuerza que multiplica tu dinero (y los errores que la anulan)

“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…

2 semanas ago

Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales

Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…

2 semanas ago

This website uses cookies.