Seaborn es una librería de visualización estadística construida sobre Matplotlib y pensada para trabajar directamente con DataFrames de Pandas. Proporciona gráficos de alto nivel, estilos agradables por defecto y funciones que comprenden la semántica de los datos en Python.
Una capa superior sobre Matplotlib que facilita crear gráficos informativos y elegantes con menos código. Incluye gráficos estadísticos comunes (distribuciones, relaciones, categóricos, regresión, mapas de calor) y atajos para trabajar con grillas (facetas) y aplicar estilos coherentes.
displot, catplot, relplot, heatmap y pairplot resuelven de una vez tareas que en Matplotlib requieren muchos pasos.hue, style, size, col y row conectan columnas del DataFrame con la estética visual sin código extra.Matplotlib sigue siendo la base y ofrece control fino; Seaborn acelera la mayoría de los casos manteniendo la posibilidad de personalizar con Matplotlib cuando haga falta.
Actualizá a la versión más reciente mediante pip:
pip install --upgrade seaborn
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
print(sns.__version__)
Desde la versión 0.12, la forma recomendada es set_theme:
sns.set_theme() # Tema estandar agradable y legible
# Opcional: elegir estilo y contexto desde el inicio
sns.set_theme(style="whitegrid", context="notebook")
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips") # DataFrame con datos de propinas
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time", style="sex")
plt.title("Relacion total de la cuenta vs propina")
plt.show()
Las tres primeras filas del dataset tips:
| total_bill | tip | sex | smoker | day | time | size |
|---|---|---|---|---|---|---|
| 16.99 | 1.01 | Female | No | Sun | Dinner | 2 |
| 10.34 | 1.66 | Male | No | Sun | Dinner | 3 |
| 21.01 | 3.50 | Male | No | Sun | Dinner | 3 |
Las funciones de nivel figura (displot, catplot, relplot, lmplot) crean figuras completas y facetas automáticamente:
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
sns.displot(data=tips, x="total_bill", hue="time", kind="kde", fill=True, col="sex")
plt.show()
Una gramática unificada para construir gráficos por capas:
import seaborn as sns
import seaborn.objects as so
tips = sns.load_dataset("tips")
(
so.Plot(tips, x="total_bill", y="tip", color="time")
.add(so.Dots(alpha=0.7))
.add(so.Line(), so.PolyFit(order=1)) # Recta de regresion
.theme(sns.plotting_context("notebook"))
).show()
Seaborn incluye estilos coherentes para fondos, rejillas y ticks:
darkgrid (por defecto tradicional)whitegrid (ideal para datos categóricos)darkwhiteticksAplicación:
sns.set_theme(style="whitegrid") # "darkgrid", "white", "dark" o "ticks"
Ajustan el tamaño de etiquetas, títulos y ticks según el uso:
papernotebook (default)talkpostersns.set_theme(context="talk") # Ideal para presentaciones
Elegí según el tipo de dato:
"deep", "muted", "bright", "pastel", "dark", "colorblind"."rocket", "mako", "flare", "crest", "viridis", "magma", entre otras."vlag", "icefire", "coolwarm", "Spectral".Aplicación global o local:
# Global: todos los graficos siguientes
sns.set_palette("deep") # O cualquier nombre de paleta
# Local: solo para un grafico
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time", palette="Set2")
Paletas continuas con cubehelix y utilidades adicionales:
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
# Paleta continua personalizada (secuencial)
pal = sns.color_palette("mako", as_cmap=True)
sns.kdeplot(data=tips, x="total_bill", fill=True, cmap=pal)
plt.show()
# Paleta divergente para resaltar alrededor de un punto medio
sns.heatmap(tips.corr(numeric_only=True), cmap="vlag", center=0)
plt.show()
Podés seguir usando Matplotlib para títulos y etiquetas:
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
sns.boxplot(data=tips, x="day", y="total_bill", hue="smoker", palette="pastel")
plt.title("Cuenta total por dia y habito de fumar")
plt.xlabel("Dia de la semana")
plt.ylabel("Total de la cuenta (USD)")
plt.legend(title="Fumador")
plt.show()
hue, style y size para codificar variables adicionales sin saturar el gráfico.row, col) cuando comparar subgrupos mejore la lectura.pip install seabornimport seaborn as sns; sns.set_theme(style="whitegrid", context="notebook")df = sns.load_dataset("tips") (u otro dataset propio)displot, relplot, catplot, heatmap o pairplot