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

Analytics Lane lanza la versión 1.4 del laboratorio con nuevas herramientas de conversión y modelos avanzados de CLV

Seguimos ampliando el laboratorio de Analytics Lane con el lanzamiento de la versión 1.4, que…

12 horas ago

Lanzamos el video de ScoreFlow: crea scorecards de crédito de forma ágil y sin IT

En Analytics Lane seguimos apostando por desarrollar herramientas que simplifiquen el trabajo de analistas y…

2 días ago

Data Leakage en Credit Scoring: El Error que Invalida tu Modelo

Imagina que construyes un scorecard con un Gini de 0,85. Un resultado extraordinario, muy por…

3 días ago

Analytics Lane lanza ScoreFlow, un SaaS para construir y desplegar scorecards de crédito

En Analytics Lane seguimos evolucionando nuestras herramientas y damos un paso más con el lanzamiento…

1 semana ago

This website uses cookies.