HOWTO · Seaborn

Rotate Axis Tick Labels of Seaborn Plots

Este tutorial demonstra como girar rótulos de escala no eixo de plotagens marítimas em Python

Nesta página

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