Rotate Axis Tick Labels of Seaborn Plots

Manav Narula 15 fevereiro 2024
  1. Use a função set_xticklabels() para girar rótulos em eixos marítimos
  2. Use a função xticks() para girar rótulos em eixos marítimos
  3. Use a função setp() para girar os rótulos nos eixos Seaborn
Rotate Axis Tick Labels of Seaborn Plots

Seaborn oferece muitas personalizações para a figura final. Uma dessas personalizações, pequena, mas essencial, é que podemos controlar os rótulos dos ticks em ambos os eixos.

Por exemplo, preste atenção ao problema com o gráfico a seguir.

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

df = pd.DataFrame(
    {
        "Date": [
            "01012019",
            "01022019",
            "01032019",
            "01042019",
            "01052019",
            "01062019",
            "01072019",
            "01082019",
        ],
        "Price": [77, 76, 68, 70, 78, 79, 74, 75],
    }
)
df["Date"] = pd.to_datetime(df["Date"], format="%d%m%Y")

plt.figure(figsize=(15, 8))
ax = sns.barplot(x="Date", y="Price", data=df)

Seaborn rotate labels 1

No código acima, traçamos um gráfico para os dados da série temporal do preço de um produto. Como você pode ver, datas inteiras são plotadas no eixo x. Por isso, tudo se sobrepõe e é difícil de ler.

Para tais situações, podemos girar os rótulos de escala no eixo.

Neste tutorial, aprenderemos como girar esses rótulos de carrapatos em plotagens marítimas.

Use a função set_xticklabels() para girar rótulos em eixos marítimos

A função set_xticklabels() define os valores para os rótulos das marcas no eixo x. Podemos usá-lo para girar os rótulos. No entanto, esta função precisa de alguns valores de rótulo para usar a função get_xticklabels() que retorna os rótulos padrão e os gira usando o parâmetro rotation.

O código a seguir demonstra seu uso.

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

df = pd.DataFrame(
    {
        "Date": [
            "01012019",
            "01022019",
            "01032019",
            "01042019",
            "01052019",
            "01062019",
            "01072019",
            "01082019",
        ],
        "Price": [77, 76, 68, 70, 78, 79, 74, 75],
    }
)
df["Date"] = pd.to_datetime(df["Date"], format="%d%m%Y")

plt.figure(figsize=(15, 8))
ax = sns.barplot(x="Date", y="Price", data=df)
ax.set_xticklabels(ax.get_xticklabels(), rotation=30)

Seaborn girar etiquetas 2

Use a função xticks() para girar rótulos em eixos marítimos

O parâmetro rotation na função matplotlib.pyplot.xticks() também pode fazer isso. Não precisamos passar nenhum rótulo e podemos usar diretamente o parâmetro nesta função.

Por exemplo,

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

df = pd.DataFrame(
    {
        "Date": [
            "01012019",
            "01022019",
            "01032019",
            "01042019",
            "01052019",
            "01062019",
            "01072019",
            "01082019",
        ],
        "Price": [77, 76, 68, 70, 78, 79, 74, 75],
    }
)
df["Date"] = pd.to_datetime(df["Date"], format="%d%m%Y")

plt.figure(figsize=(15, 8))
ax = sns.barplot(x="Date", y="Price", data=df)
plt.xticks(rotation=45)

etiquetas de rotação marítima 3

Use a função setp() para girar os rótulos nos eixos Seaborn

Visto que a maioria dos gráficos marítimos retornam um objeto de eixos matplotlib, podemos usar a função setp() desta biblioteca. Pegaremos os valores do marcador de escala usando a função xtick() e girá-los usando o parâmetro rotation da função setp().

Veja o seguinte código.

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

df = pd.DataFrame(
    {
        "Date": [
            "01012019",
            "01022019",
            "01032019",
            "01042019",
            "01052019",
            "01062019",
            "01072019",
            "01082019",
        ],
        "Price": [77, 76, 68, 70, 78, 79, 74, 75],
    }
)
df["Date"] = pd.to_datetime(df["Date"], format="%d%m%Y")

plt.figure(figsize=(15, 8))
ax = sns.barplot(x="Date", y="Price", data=df)
locs, labels = plt.xticks()
plt.setp(labels, rotation=45)

etiquetas de rotação marítima 4

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artigo relacionado - Seaborn Axis

Artigo relacionado - Seaborn Label