Diagrama de barras de Seaborn - Tutorial y ejemplos

En este tutorial, veremos cómo trazar un gráfico de barras con Seaborn y Python. Repasaremos los diagramas de barras básicos, así como también los personalizaremos, cómo agrupar y ordenar barras, etc.

Introducción

Seaborn es una de las bibliotecas de visualización de datos más utilizadas en Python, como una extensión de Matplotlib. Ofrece una API simple, intuitiva pero altamente personalizable para la visualización de datos.

En este tutorial, veremos cómo trazar un diagrama de barra en Seaborn.

Los gráficos de barras muestran cantidades numéricas en un eje y variables categóricas en el otro, lo que le permite ver cuántas ocurrencias hay para las diferentes categorías.

Los gráficos de barras se pueden usar para visualizar una serie de tiempo, así como solo datos categóricos.

Parcela de barra Parcela en Seaborn

Trazar un gráfico de barras en Seaborn es tan fácil como llamar a la función barplot() en la instancia sns y pasar las variables categóricas y continuas que nos gustaría visualizar:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_style('darkgrid')

x = ['A', 'B', 'C']
y = [1, 5, 3]

sns.barplot(x, y)
plt.show()

Aquí, tenemos algunas variables categóricas en una lista: A, B y C. También tenemos un par de variables continuas en otra lista: 1, 5 y 3. La relación entre estos dos se visualiza en un gráfico de barras pasando estas dos listas a sns.barplot().

Esto da como resultado un gráfico de barras limpio y simple:

basic bar plot in seaborn

Aunque, la mayoría de las veces, trabajará con conjuntos de datos que contienen muchos más datos que estos. A veces, se aplican operaciones a estos datos, como clasificar o contar ciertas ocurrencias.

Siempre que esté tratando con medios de datos, tendrá algunos errores de relleno que pueden surgir de ellos. Afortunadamente, Seaborn nos tiene cubiertos y aplica barras de error automáticamente, ya que de forma predeterminada calcula la media de los datos que proporcionamos.

Importemos el clásico Titanic Dataset y visualicemos un gráfico de barras con datos de allí:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import matplotlib.pyplot as plt
import seaborn as sns

# Set Seaborn style
sns.set_style('darkgrid')
# Import Data
titanic_dataset = sns.load_dataset("titanic")

# Construct plot
sns.barplot(x = "sex", y = "survived", data = titanic_dataset)
plt.show()

Esta vez, hemos asignado x e y a las columnas sexo y sobreviviente del conjunto de datos, en lugar de las listas codificadas.

Si imprimimos el encabezado del conjunto de datos:

1
print(titanic_dataset.head())

Nos reciben con:

1
2
3
4
5
6
7
8
   survived  pclass     sex   age  sibsp  parch     fare  ...
0         0       3    male  22.0      1      0   7.2500  ...
1         1       1  female  38.0      1      0  71.2833  ...
2         1       3  female  26.0      0      0   7.9250  ...
3         1       1  female  35.0      1      0  53.1000  ...
4         0       3    male  35.0      0      0   8.0500  ...

[5 rows x 15 columns]

Asegúrese de hacer coincidir los nombres de estas funciones cuando asigne las variables x e y.

Finalmente, usamos el argumento data y pasamos el conjunto de datos con el que estamos trabajando y del cual se extraen las características. Esto resulta en:

plot bar plot from dataset in seaborn

Trazar un gráfico de barra horizontal en Seaborn

Para trazar un diagrama de barras horizontalmente, en lugar de verticalmente, simplemente podemos cambiar los lugares de las variables x e y.

Esto hará que la variable categórica se represente en el eje Y, lo que dará como resultado un diagrama horizontal:

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import seaborn as sns

x = ['A', 'B', 'C']
y = [1, 5, 3]

sns.barplot(y, x)
plt.show()

Esto resulta en:

plot horizontal bar plot seaborn

Volviendo al ejemplo del Titanic, esto se hace de la misma manera:

1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import seaborn as sns

titanic_dataset = sns.load_dataset("titanic")

sns.barplot(x = "survived", y = "class", data = titanic_dataset)
plt.show()

Lo que resulta en:

plot horizontal bar plot of dataset seaborn

Cambiar el color de la gráfica de barras en Seaborn

Cambiar el color de las barras es bastante fácil. El argumento color acepta un color de Matplotlib y lo aplica a todos los elementos.

Vamos a cambiarlos a azul:

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import seaborn as sns

x = ['A', 'B', 'C']
y = [1, 5, 3]

sns.barplot(x, y, color='blue')
plt.show()

Esto resulta en:

change bar plot color in seaborn

O, mejor aún, puedes establecer el argumento palette, que acepta una gran variedad de paletas. Uno bastante común es hls:

1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import seaborn as sns

titanic_dataset = sns.load_dataset("titanic")

sns.barplot(x = "embark_town", y = "survived", palette = 'hls', data = titanic_dataset)
plt.show()

Esto resulta en:

set color palette in seaborn bar plot

Parcela Parcela de barra agrupada en Seaborn

Agrupar barras en parcelas es una operación común. Digamos que desea comparar algunos datos comunes, como la tasa de supervivencia de los pasajeros, pero le gustaría agruparlos con algunos criterios.

Podríamos querer visualizar la relación de los pasajeros que sobrevivieron, segregados en clases (primera, segunda y tercera), pero también tener en cuenta de qué ciudad se embarcaron.

Esta es una buena cantidad de información en un gráfico, y se puede poner fácilmente en un gráfico de barras simple.

Para agrupar las barras, usamos el argumento hue. Técnicamente, como su nombre lo indica, el argumento tono le dice a Seaborn cómo colorear las barras, pero en el proceso de coloreado, agrupa datos relevantes.

Echemos un vistazo al ejemplo que acabamos de discutir:

1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import seaborn as sns

titanic_dataset = sns.load_dataset("titanic")

sns.barplot(x = "class", y = "survived", hue = "embark_town", data = titanic_dataset)
plt.show()

Esto resulta en:

plot grouped bar plot in seaborn

Ahora, las barras de error en los datos de Queenstown son bastante grandes. Esto indica que los datos sobre los pasajeros que sobrevivieron y embarcaron desde Queenstown varían mucho para la primera y segunda clase.

Pedido de barras agrupadas en un gráfico de barras con Seaborn

Puede cambiar el orden de las barras del orden predeterminado (lo que Seaborn crea que tiene más sentido) a algo que le gustaría resaltar o explorar.

Esto se hace a través del argumento order, que acepta una lista de los valores y el orden en que le gustaría ponerlos.

Por ejemplo, hasta ahora ordenaba las clases de la primera a la tercera. ¿Y si nos gustaría hacerlo al revés?

1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import seaborn as sns

titanic_dataset = sns.load_dataset("titanic")

sns.barplot(x = "class", y = "survived", hue = "embark_town", order = ["Third", "Second", "First"], data = titanic_dataset)
plt.show()

Ejecutar este código da como resultado:

ordering grouped bar plots in seaborn

Cambiar el intervalo de confianza en el gráfico de barras de Seaborn

También puede jugar fácilmente con el intervalo de confianza configurando el argumento ci.

Por ejemplo, puede desactivarlo configurándolo en Ninguno, o usar la desviación estándar en lugar de la media configurando sd, o incluso poner un tamaño límite en las barras de error con fines estéticos configurando capsize.

Juguemos un poco con el atributo del intervalo de confianza:

1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import seaborn as sns

titanic_dataset = sns.load_dataset("titanic")

sns.barplot(x = "class", y = "survived", hue = "embark_town", ci = None, data = titanic_dataset)
plt.show()

Esto ahora elimina nuestras barras de error de antes:

change confidence interval of error bars in seaborn

O bien, podríamos usar la desviación estándar para las barras de error y establecer un tamaño límite:

1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import seaborn as sns

titanic_dataset = sns.load_dataset("titanic")

sns.barplot(x = "class", y = "survived", hue = "who", ci = "sd", capsize = 0.1, data = titanic_dataset)
plt.show()

remove error bars from seaborn bar plot

Conclusión

En este tutorial, hemos repasado varias formas de trazar un gráfico de barras usando Seaborn y Python. Comenzamos con diagramas simples y diagramas horizontales, y luego continuamos personalizándolos.

Hemos cubierto cómo cambiar los colores de las barras, agruparlas, ordenarlas y cambiar el intervalo de confianza.

Si está interesado en Visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro paquete de libros en [Visualización de datos en Python](https://gum.co/data-visualization -en-paquete-de-libros-de-python):

Visualización de datos en Python Vuélvase peligroso con la visualización de datos ✅ Garantía de devolución de dinero de 30 días sin preguntas ✅ Principiante a Avanzado ✅ Actualizado periódicamente de forma gratuita (última actualización en abril de 2021) ✅ Actualizado con recursos y guías adicionales

Visualización de datos en Python con Matplotlib y Pandas es un libro diseñado para llevar a los principiantes absolutos a Pandas y Matplotlib, con conocimientos básicos de Python, y permitirles construir una base sólida para el trabajo avanzado con estas bibliotecas, desde gráficos simples. a gráficos 3D animados con botones interactivos.

Sirve como una guía detallada que le enseñará todo lo que necesita saber sobre Pandas y Matplotlib, incluido cómo construir tipos de gráficos que no están integrados en la propia biblioteca.

Visualización de datos en Python, un libro para desarrolladores principiantes e intermedios de Python, lo guía a través de la manipulación de datos simple con Pandas, cubre bibliotecas de trazado centrales como Matplotlib y Seaborn, y le muestra cómo aprovechar las bibliotecas declarativas y experimentales. como Altair. Más específicamente, a lo largo de 11 capítulos, este libro cubre 9 bibliotecas de Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas y VisPy.

Sirve como una guía práctica única para la visualización de datos, en una plétora de herramientas que podría usar en su carrera.