Seaborn
Tutorial Seaborn: Títulos, etiquetas y leyenda y límites
Seaborn: Cómo Añadir Títulos, Etiquetas, Leyendas y Límites. Aprende a personalizar gráficos con títulos, etiquetas, anotaciones y leyendas, mejorando la interpretación de tus datos.
Aprende Seaborn GRATIS y certifícateTítulos
Añadir un título a un gráfico es fundamental para proporcionar contexto y facilitar la interpretación de los datos. En Seaborn, que está construido sobre Matplotlib, puedes incorporar títulos utilizando métodos integrados de manera sencilla.
Para establecer un título en tu gráfico, puedes usar el método set_title()
del objeto Axes retornado por la función de Seaborn. Por ejemplo:
import seaborn as sns
import matplotlib.pyplot as plt
# Cargar un conjunto de datos de ejemplo
datos = sns.load_dataset('tips')
# Crear el gráfico
ax = sns.scatterplot(data=datos, x='total_bill', y='tip')
# Agregar un título
ax.set_title('Relación entre la cuenta total y la propina')
# Mostrar el gráfico
plt.show()
En este ejemplo, ax
es el objeto Axes devuelto por sns.scatterplot()
, y set_title()
establece el título del gráfico.
Si utilizas funciones de Seaborn que devuelven un objeto figura, como sns.displot()
o sns.catplot()
, puedes añadir un título a la figura completa utilizando figure.suptitle()
:
import seaborn as sns
import matplotlib.pyplot as plt
# Cargar un conjunto de datos de ejemplo
datos = sns.load_dataset('tips')
# Crear un gráfico de distribución
g = sns.displot(data=datos, x='total_bill')
# Agregar un título a la figura
g.figure.suptitle('Distribución de la cuenta total')
# Ajustar los espacios para que el título no se superponga con el gráfico
g.figure.tight_layout()
# Mostrar el gráfico
plt.show()
Es importante llamar a tight_layout()
después de suptitle()
para evitar que el título se superponga con el contenido del gráfico.
Para personalizar la estética del título, puedes utilizar parámetros adicionales como fontsize
, color
o fontweight
:
ax.set_title('Relación entre la cuenta total y la propina', fontsize=14, color='blue', fontweight='bold')
Esto permite ajustar el tamaño de la fuente, el color y el grosor del título según tus necesidades.
Cuando trabajas con múltiples subgráficos creados con FacetGrid
, puedes añadir títulos a cada eje individual o a la figura en su conjunto:
import seaborn as sns
import matplotlib.pyplot as plt
# Cargar un conjunto de datos de ejemplo
datos = sns.load_dataset('tips')
# Crear una cuadrícula de gráficos
g = sns.FacetGrid(datos, col='time')
g.map(sns.histplot, 'total_bill')
# Agregar un título a cada gráfico
g.set_titles('Hora del día: {col_name}')
# Agregar un título general a la figura
g.figure.suptitle('Distribución de la cuenta total por hora del día', fontsize=16)
# Ajustar los espacios
g.figure.tight_layout()
# Mostrar los gráficos
plt.show()
En este caso, set_titles()
añade títulos dinámicos a cada subgráfico basados en el nombre de la columna, y suptitle()
establece un título general para toda la figura.
Incorporar títulos claros y descriptivos mejora la comunicación de tus visualizaciones y ayuda a transmitir el mensaje de manera efectiva.
Etiquetas, anotaciones y texto
Añadir etiquetas y anotaciones en los gráficos es esencial para mejorar su interpretabilidad y comunicación. En Seaborn, que se basa en Matplotlib, podemos personalizar las etiquetas de los ejes, añadir comentarios y colocar texto en posiciones específicas del gráfico de forma sencilla.
Para establecer las etiquetas de los ejes, utilizamos los métodos set_xlabel()
y set_ylabel()
del objeto Axes devuelto por las funciones de Seaborn. Por ejemplo:
import seaborn as sns
import matplotlib.pyplot as plt
# Cargar un conjunto de datos de ejemplo
datos = sns.load_dataset('penguins')
# Crear un gráfico de dispersión
ax = sns.scatterplot(data=datos, x='bill_length_mm', y='bill_depth_mm')
# Añadir etiquetas a los ejes
ax.set_xlabel('Longitud del pico (mm)')
ax.set_ylabel('Profundidad del pico (mm)')
# Mostrar el gráfico
plt.show()
En este ejemplo, ax
es el objeto Axes retornado por sns.scatterplot()
, y los métodos set_xlabel()
y set_ylabel()
establecen las etiquetas de los ejes X e Y respectivamente.
También podemos modificar las etiquetas de las marcas de los ejes (ticks) utilizando los métodos set_xticklabels()
y set_yticklabels()
. Sin embargo, es importante tener en cuenta que estos métodos pueden causar problemas si los datos se actualizan dinámicamente. En su lugar, es preferible ajustar las propiedades de los ejes utilizando funciones como plt.xticks()
y plt.yticks()
o las capacidades de formateo de Matplotlib.
Para agregar anotaciones o texto en una posición específica del gráfico, utilizamos el método text()
del objeto Axes:
# Añadir una anotación en el gráfico
ax.text(45, 17, 'Pico largo y profundo', fontsize=12, color='red')
# Mostrar el gráfico
plt.show()
En este caso, text()
coloca el texto 'Pico largo y profundo' en las coordenadas X=45, Y=17. Podemos ajustar el tamaño de fuente, color y otras propiedades del texto según sea necesario.
Si queremos resaltar un punto o área específica, podemos utilizar el método annotate()
, que nos permite crear anotaciones más elaboradas con flechas y estilos personalizados:
# Seleccionar un punto de interés
x_anot = datos['bill_length_mm'].mean()
y_anot = datos['bill_depth_mm'].mean()
# Añadir una anotación con una flecha
ax.annotate('Media de valores', xy=(x_anot, y_anot), xytext=(55, 15),
arrowprops=dict(facecolor='black', shrink=0.05),
fontsize=12, ha='center')
# Mostrar el gráfico
plt.show()
Aquí, annotate()
agrega el texto 'Media de valores' en la posición especificada por xytext
, y la flecha apunta a la coordenada xy
. El parámetro arrowprops
define las propiedades de la flecha.
Para gráficos creados con funciones basadas en FacetGrid
, como sns.relplot()
o sns.catplot()
, podemos establecer etiquetas de eje y texto adicional utilizando los métodos set_axis_labels()
y fig.text()
:
# Crear un gráfico con FacetGrid
g = sns.relplot(data=datos, x='bill_length_mm', y='bill_depth_mm', col='species')
# Añadir etiquetas de los ejes
g.set_axis_labels('Longitud del pico (mm)', 'Profundidad del pico (mm)')
# Añadir texto en la figura
g.figure.text(0.5, 1.0, 'Datos de pingüinos de Palmer Archipelago', ha='center', fontsize=12)
# Mostrar el gráfico
plt.show()
En este ejemplo, set_axis_labels()
establece las etiquetas de los ejes para todos los subgráficos, y figure.text()
coloca un texto en una posición absoluta dentro de la figura (en este caso, centrado en la parte inferior).
Además, es posible personalizar el estilo del texto utilizando tipografías y colores:
import seaborn as sns
import matplotlib.pyplot as plt
# Cargar un conjunto de datos de ejemplo
datos = sns.load_dataset('penguins')
# Crear un gráfico de dispersión
ax = sns.scatterplot(data=datos, x='bill_length_mm', y='bill_depth_mm')
# Personalizar etiquetas de los ejes con estilos
ax.set_xlabel('Longitud del pico (mm)', fontsize=14, fontweight='bold', color='darkgreen')
ax.set_ylabel('Profundidad del pico (mm)', fontsize=14, fontweight='bold', color='darkblue')
# Mostrar el gráfico
plt.show()
Esto nos permite destacar las etiquetas según nuestras necesidades estéticas o informativas.
Al trabajar con anotaciones complejas, podemos utilizar recuadros de texto (bbox) para mejorar la legibilidad:
# Añadir una anotación con un recuadro
ax.text(50, 20, 'Zona de interés',
bbox=dict(facecolor='yellow', alpha=0.5),
fontsize=12)
# Mostrar el gráfico
plt.show()
El parámetro bbox
define las propiedades del recuadro que envuelve al texto, lo que ayuda a que destaque sobre el fondo del gráfico.
Finalmente, para situaciones donde queremos rotar las etiquetas de los ejes para evitar la superposición, podemos utilizar:
# Rotar etiquetas del eje X
plt.setp(ax.get_xticklabels(), rotation=45)
# Mostrar el gráfico
plt.show()
Este método ajusta la rotación de las etiquetas del eje X, lo que es útil cuando las etiquetas son largas o numerosas.
En resumen, la incorporación de etiquetas claras y anotaciones precisas es fundamental para crear visualizaciones efectivas con Seaborn, facilitando la comprensión y el análisis de los datos presentados.
Leyenda con seaborn
La leyenda es un elemento esencial en los gráficos que permite identificar y diferenciar las distintas categorías o variables representadas. En Seaborn, las leyendas se generan automáticamente cuando se incluyen variables categóricas como hue
, style
o size
, pero también es posible personalizarlas para adaptarlas a necesidades específicas.
Por defecto, al crear un gráfico con una variable en el parámetro hue
, Seaborn añade una leyenda que indica a qué categoría corresponde cada color. Por ejemplo:
import seaborn as sns
import matplotlib.pyplot as plt
# Cargar un conjunto de datos de ejemplo
datos = sns.load_dataset('iris')
# Crear un gráfico de dispersión con 'hue' basado en la especie
ax = sns.scatterplot(data=datos, x='sepal_length', y='sepal_width', hue='species')
# Mostrar el gráfico
plt.show()
En este caso, la leyenda muestra las diferentes especies de iris, asignando un color distinto a cada una.
Para personalizar la posición de la leyenda, podemos utilizar el método legend()
del objeto Axes y especificar el parámetro loc
:
# Ubicar la leyenda en la esquina superior izquierda
ax.legend(loc='upper left')
# Mostrar el gráfico
plt.show()
Los valores comunes para loc
incluyen 'upper right'
, 'lower left'
, 'center'
, entre otros, y permiten colocar la leyenda en la posición más adecuada según el diseño del gráfico.
Si deseamos modificar el título de la leyenda, podemos hacerlo directamente:
# Cambiar el título de la leyenda
ax.legend(title='Tipo de Iris')
# Mostrar el gráfico
plt.show()
Para cambiar las etiquetas que aparecen en la leyenda, es posible obtener y ajustar los handles y labels:
# Obtener los handles y labels actuales
handles, labels = ax.get_legend_handles_labels()
# Definir nuevas etiquetas
nuevas_etiquetas = ['Iris Setosa', 'Iris Versicolor', 'Iris Virginica']
# Actualizar la leyenda con las nuevas etiquetas
ax.legend(handles=handles, labels=nuevas_etiquetas, title='Tipo de Iris')
# Mostrar el gráfico
plt.show()
En ocasiones, puede ser necesario eliminar la leyenda para simplificar la presentación. Esto se logra con:
# Eliminar la leyenda del gráfico
ax.get_legend().remove()
# Mostrar el gráfico
plt.show()
Cuando se trabaja con gráficos que incluyen variables adicionales como style
o size
, la leyenda se ajusta automáticamente para reflejar estos elementos:
# Gráfico con variables 'hue' y 'style'
ax = sns.scatterplot(data=datos, x='sepal_length', y='sepal_width', hue='species', style='species')
# Mostrar el gráfico
plt.show()
La leyenda resultante indicará tanto el color como el estilo de marcador asociado a cada especie, proporcionando una guía completa para interpretar el gráfico.
Para personalizar la apariencia de la leyenda, se pueden ajustar parámetros como el tamaño de fuente, colores y espaciamiento:
import seaborn as sns
import matplotlib.pyplot as plt
# Cargar un conjunto de datos de ejemplo
datos = sns.load_dataset('iris')
# Crear un gráfico de dispersión con 'hue' basado en la especie
ax = sns.scatterplot(data=datos, x='sepal_length', y='sepal_width', hue='species')
# Personalizar detalles de la leyenda
ax.legend(title='Tipo de Iris',
title_fontsize=12,
fontsize=10,
facecolor='lightgrey',
edgecolor='black')
# Mostrar el gráfico
plt.show()
Esto permite que la leyenda se integre de manera armoniosa con el diseño general del gráfico.
En gráficos creados con FacetGrid, como los producidos por sns.relplot()
o sns.catplot()
, es posible controlar la leyenda a nivel del objeto de la figura:
# Gráfico relacional con FacetGrid
g = sns.relplot(data=datos, x='sepal_length', y='sepal_width', hue='species', col='species')
# Ajustar el título de la leyenda
g.legend.set_title('Tipo de Iris')
# Mostrar el gráfico
plt.show()
Si se necesita eliminar la leyenda en este contexto, se puede hacer:
# Eliminar la leyenda en FacetGrid
g._legend.remove()
# Mostrar el gráfico
plt.show()
Al tratar con datos categóricos cuyos nombres no son descriptivos, es útil actualizar las etiquetas directamente en los datos para que la leyenda sea más informativa:
# Renombrar categorías en el DataFrame
datos['species'] = datos['species'].map({'setosa': 'Setosa', 'versicolor': 'Versicolor', 'virginica': 'Virgínica'})
# Crear el gráfico con las etiquetas actualizadas
ax = sns.scatterplot(data=datos, x='sepal_length', y='sepal_width', hue='species')
# Mostrar el gráfico
plt.show()
Así, la leyenda refleja los nombres más claros o traducidos de las categorías, facilitando la comprensión.
Para gráficos que incluyen múltiples subgráficos o cuando se desea una leyenda común para varios gráficos, se puede utilizar la funcionalidad de Matplotlib:
import seaborn as sns
import matplotlib.pyplot as plt
# Cargar un conjunto de datos de ejemplo
datos = sns.load_dataset('iris')
# Crear subgráficos
fig, axes = plt.subplots(1, 2, figsize=(12, 6))
# Primer gráfico sin leyenda
sns.scatterplot(data=datos, x='sepal_length', y='sepal_width', hue='species', ax=axes[0], legend=False)
# Segundo gráfico sin leyenda
sns.scatterplot(data=datos, x='petal_length', y='petal_width', hue='species', ax=axes[1], legend=False)
# Añadir una leyenda común
handles, labels = axes[0].get_legend_handles_labels()
fig.legend(handles, labels, loc='upper center', ncol=3, title='Tipo de Iris')
# Ajustar espaciado
plt.tight_layout()
# Mostrar los gráficos
plt.show()
Esta configuración crea una leyenda unificada ubicada en una posición central que aplica a ambos gráficos, mejorando la consistencia visual.
En resumen, la gestión de la leyenda en Seaborn es flexible y permite adaptaciones detalladas para mejorar la claridad y la efectividad de las visualizaciones. Al comprender cómo personalizar este elemento, se pueden crear gráficos más informativos y atractivos.
Ejercicios de esta lección Títulos, etiquetas y leyenda y límites
Evalúa tus conocimientos de esta lección Títulos, etiquetas y leyenda y límites con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Grids Multiplot en Seaborn
Gráfico de barras con datos categóricos con Seaborn
Evaluación código global
Grids y análisis multivariado
Títulos, etiquetas y leyenda y límites
Ejes, ajustes de ejes
Análisis bivariante con scatterplot
Temas predefinidos, colores y estilos
Conceptos básicos de Seaborn
Gráficos bivariantes
Gráficos multivariantes
Evaluación test global
Integración de Seaborn con Pandas
Introducción e instalación
Gráficos univariantes
Todas las lecciones de Seaborn
Accede a todas las lecciones de Seaborn y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción E Instalación
Introducción Y Entorno
Conceptos Básicos De Seaborn
Introducción Y Entorno
Gráficos Univariantes
Creación De Gráficos
Gráficos Bivariantes
Creación De Gráficos
Gráficos Multivariantes
Creación De Gráficos
Títulos, Etiquetas Y Leyenda Y Límites
Personalización De Gráficos
Temas Predefinidos, Colores Y Estilos
Personalización De Gráficos
Ejes, Ajustes De Ejes
Personalización De Gráficos
Grids Multiplot En Seaborn
Personalización De Gráficos
Integración De Seaborn Con Pandas
Integraciones
Evaluación Test De Conocimientos
Evaluación
Evaluación Conocimiento De Código
Evaluación
Certificados de superación de Seaborn
Supera todos los ejercicios de programación del curso de Seaborn y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.
En esta lección
Objetivos de aprendizaje de esta lección
- Añadir y personalizar títulos en gráficos de Seaborn usando
set_title()
ysuptitle()
. - Incorporar y ajustar etiquetas de ejes con
set_xlabel()
yset_ylabel()
. - Utilizar
text()
yannotate()
para añadir anotaciones y textos en posiciones específicas del gráfico. - Personalizar la apariencia y posición de las leyendas en los gráficos de Seaborn.
- Modificar, actualizar o eliminar leyendas para adaptarlas a las necesidades de la visualización.
- Mejorar la comunicación visual de los datos mediante elementos informativos y estéticos.