Personalización de los ejes en seaborn

Las funciones de seaborn devuelven unos ejes de matplotlib (funciones a nivel de ejes como scatterplot o boxplot) o una cuadrícula de ejes (funciones a nivel de figura como relplot o displot). En ambos casos los ejes se pueden personalizar con métodos de seaborn y de matplotlib, como se muestra en este tutorial.

Etiquetas de los ejes

Por defecto seaborn utiliza los nombres de las columnas como etiquetas de los ejes. Cámbialas con ax.set (o con ax.set_xlabel y ax.set_ylabel).

import seaborn as sns
import matplotlib.pyplot as plt

iris = sns.load_dataset("iris")

ax = sns.scatterplot(data = iris, x = "sepal_length", y = "petal_length")
ax.set(xlabel = "Longitud del sépalo (cm)", ylabel = "Longitud del pétalo (cm)")
# plt.show()

Cambiar las etiquetas de los ejes en seaborn

Etiquetas en funciones a nivel de figura

Las funciones a nivel de figura devuelven un FacetGrid. Utiliza su método set_axis_labels para cambiar las etiquetas de todos los subplots a la vez.

import seaborn as sns
import matplotlib.pyplot as plt

iris = sns.load_dataset("iris")

g = sns.relplot(data = iris, x = "sepal_length", y = "petal_length", height = 4)
g.set_axis_labels("Longitud del sépalo (cm)", "Longitud del pétalo (cm)")
# plt.show()

Etiquetas de los ejes en un gráfico de seaborn a nivel de figura con set_axis_labelsEtiquetas de los ejes en un gráfico de seaborn a nivel de figura con set_axis_labels

Límites de los ejes

Establece los límites de los ejes con ax.set(xlim = ..., ylim = ...) o con set_xlim y set_ylim.

import seaborn as sns
import matplotlib.pyplot as plt

iris = sns.load_dataset("iris")

ax = sns.scatterplot(data = iris, x = "sepal_length", y = "petal_length")
ax.set(xlim = (4, 8), ylim = (0, 8))
# plt.show()

Establecer los límites de los ejes en seaborn

Rotar las etiquetas de los ticks

Cuando las categorías tienen nombres largos las etiquetas del eje X se solapan. Rótalas con tick_params o con plt.xticks(rotation = 45). En las funciones a nivel de figura utiliza g.tick_params(axis = "x", rotation = 45).

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.DataFrame({"country": ["Estados Unidos", "Reino Unido", "Alemania", "Francia", "España"],
                   "value": [32, 21, 25, 18, 15]})

ax = sns.barplot(data = df, x = "country", y = "value", color = "#4C72B0")
ax.tick_params(axis = "x", rotation = 45, labelsize = 12)
# plt.show()

Rotar las etiquetas de los ticks de un gráfico de seaborn

Gráficos horizontales

Una alternativa a rotar las etiquetas es intercambiar las variables para crear un gráfico horizontal, en el que las etiquetas largas tienen mucho más espacio.

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.DataFrame({"country": ["Estados Unidos", "Reino Unido", "Alemania", "Francia", "España"],
                   "value": [32, 21, 25, 18, 15]})

sns.barplot(data = df, x = "value", y = "country")
# plt.show()

Gráfico de barras horizontal en seaborn para evitar que las etiquetas se solapen

Ticks y formato de los ticks

Cambia la posición de los ticks con set_xticks y set_yticks y da formato a los números con los formateadores de matplotlib.ticker, por ejemplo para mostrar moneda o porcentajes.

import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.ticker import StrMethodFormatter

diamonds = sns.load_dataset("diamonds")

ax = sns.histplot(data = diamonds, x = "price", binrange = (0, 10000))
ax.set_xticks([0, 2500, 5000, 7500, 10000])
ax.xaxis.set_major_formatter(StrMethodFormatter("${x:,.0f}"))
# plt.show()

Formato de moneda en los ticks de un gráfico de seaborn

Escala logarítmica

Varias funciones de seaborn, como histplot, kdeplot o boxplot, tienen el argumento log_scale. Para el resto utiliza ax.set_xscale("log") o ax.set_yscale("log").

import seaborn as sns
import matplotlib.pyplot as plt

diamonds = sns.load_dataset("diamonds")

sns.histplot(data = diamonds, x = "price", log_scale = True)
# plt.show()

Escala logarítmica en un histograma de seaborn

Eliminar los bordes de los ejes con despine

sns.despine elimina los bordes superior y derecho. Utiliza left = True o bottom = True para eliminar los demás y offset para separar los ejes de los datos.

import seaborn as sns
import matplotlib.pyplot as plt

iris = sns.load_dataset("iris")

sns.boxplot(data = iris, x = "species", y = "sepal_width")
sns.despine(offset = 10, trim = True)
# plt.show()

Eliminar los bordes de un gráfico de seaborn con despine

Las funciones a nivel de figura llaman a despine automáticamente. Consulta también cómo personalizar el grid, los títulos o el tema de los gráficos de seaborn.

Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon
Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon

También te puede interesar