Gráfico de barras (bar plot) en seaborn

Simulación de datos

Los siguientes datos representan los valores que toma una variable a lo largo de tres grupos y dos subgrupos. Estos datos serán usados como datos de muestra a lo largo de este tutorial.

import numpy as np
import seaborn as sns
import random

# Simulación de datos
rng = np.random.RandomState(0)
variable = rng.normal(20, 1, size = 50)
random.seed(0)
grupo = random.choices(["G1", "G2", "G3"], k = 50)
grupo2 = random.choices(["A", "B"], k = 50)
df = {'variable': variable, 'grupo': grupo, 'grupo2': grupo2}

Gráfico de barras en seaborn con la función barplot

La función barplot permite crear gráficos de barras en seaborn. Esta función calcula la media para cada variable categórica y la representa con barras, así como sus intervalos de confianza con barras de error. Usa la función countplot para crear un gráfico de barras que muestre el conteo para cada categoría.

import seaborn as sns

# Gráfico de barras
sns.barplot(x = grupo, y = variable)

# Equivalente a:
sns.barplot(x = "grupo", y = "variable", data = df)

Gráfico de barras en Python con la función barplot

Si no quieres utilizar la media como estimador puedes pasar otra función al argumento estimator.

Bar plot horizontal

Si quieres crear un gráfico de barras horizontal tan solo necesitas intercambiar las variables de entrada, pasando la variable categórica a y.

import seaborn as sns

# Gráfico de barras horizontal
sns.barplot(x = variable, y = grupo)

Gráfico de barras horizontal en Python con seaborn

Orden

Ten en cuenta que el orden por defecto de las barras depende del orden de aparición de los grupos de la variable. Si quieres sobrescribir el orden pasa una lista con el orden que quieras al argumento order.

import seaborn as sns

sns.barplot(x = grupo, y = variable,
            order = ["G1", "G2", "G3"])

Cambiar el orden de las barras de un bar plot en Python

Grafico de barras por subgrupo

Si tienes otra variable categórica que divide las categorías en subcategorías puedes pasarla al argumento hue, de modo que se creará un gráfico de barras en base a ambas variables categóricas.

import seaborn as sns

# Gráfico de barras por grupo y subgrupo
sns.barplot(x = grupo, y = variable,
            hue = grupo2)

Gráfico de barras con dos grupos en seaborn

Barras de error

Eliminar las barras de error de un gráfico de barras en seaborn

Eliminar las barras de error

Las barras de error se muestran sobre cada barra por defecto, pero es posible eliminarlas estableciendo el argumento ci como False. También puedes establecer este argumento como "sd" de forma que las barras de error se calcularán en base a la desviación típica de los datos.

import seaborn as sns

sns.barplot(x = grupo, y = variable,
            ci = None)

Agregar segmentos horizontales a las barras de error en Python

Agregar segmentos horizontales a las barras de error

Si quieres añadir los segmentos horizontales que acotan las barras de error puedes seleccionar su tamaño con el argumento capsize, tal y como se muestra a continuación.

import seaborn as sns

sns.barplot(x = grupo, y = variable,
            capsize = 0.25)

Color y grosor de las barras de error en la función barplot

Color y grosor de las barras de error

Además, es posible cambiar el grosor y el color de las barras de error con errwidth y errcolor, respectivamente.

import seaborn as sns

sns.barplot(x = grupo, y = variable,
            errwidth = 1,
            errcolor = "red")

Personalización del color

Mismo color para todas las barras

Si quieres establecer el mismo color para todas las barras elige un color con el argumento color. Recuerda que puedes cambiar su saturación con el argumento saturation.

import seaborn as sns

sns.barplot(x = grupo, y = variable,
            color = "darkseagreen",
            saturation = 0.75)

Color de las barras de un gráfico de barras en Python

Paleta de colores

Una alternativa es seleccionar una paleta de colores o pasar un diccionario con un color para cada grupo al argumento palette de la función.

import seaborn as sns

sns.barplot(x = grupo, y = variable,
            palette = "Blues_d")

Cambiar la paleta de colores de un gráfico de barras en seaborn

Personalización avanzada

Por último, cabe destacar que existen otros argumentos para personalizar el estilo del gráfico, como edgecolor, para cambiar el color de los bordes, entre otros.

import seaborn as sns

sns.barplot(x = grupo, y = variable,
            linewidth = 1,
            facecolor = "white",
            edgecolor = "red")

Color de los bordes del gráfico de barras en seaborn

Better Data Visualizations

A Guide for Scholars, Researchers, and Wonks

Comprar en Amazon
Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon

También te puede interesar