Data Visualization

Dominando a Rotação de Rótulos no Eixo X com Matplotlib

Spread the love

Rotacionar rótulos de ticks do eixo x no Matplotlib é uma tarefa comum ao lidar com rótulos longos ou texto sobreposto. Este artigo explora vários métodos para alcançar visualizações claras e legíveis, oferecendo flexibilidade para vários cenários de plotagem.

Sumário

Usando plt.xticks()

Esta é a abordagem mais simples para rotacionar rótulos de ticks do eixo x. O parâmetro rotation controla diretamente o ângulo de rotação.


import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)
y = np.random.rand(10)
labels = ['Rótulo Muito Longo ' + str(i) for i in x]

plt.plot(x, y)
plt.xticks(x, labels, rotation=45, ha='right')  # ha='right' alinha rótulos à direita
plt.xlabel("Eixo X")
plt.ylabel("Eixo Y")
plt.title("Rotacionando Rótulos do Eixo X")
plt.tight_layout()  # Previne sobreposição de rótulos
plt.show()

O argumento ha='right' é crucial para o alinhamento correto após a rotação. plt.tight_layout() ajuda a prevenir a sobreposição de rótulos e melhora a legibilidade geral.

Usando fig.autofmt_xdate()

Especificamente projetado para rótulos de data, fig.autofmt_xdate() ajusta automaticamente a rotação e o alinhamento para uma legibilidade ideal.


import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime

dates = [datetime.date(2024, 1, i) for i in range(1, 11)]
values = np.random.rand(10)

fig, ax = plt.subplots()
ax.plot(dates, values)
fig.autofmt_xdate(rotation=45)
plt.show()

Este método simplifica o processo ao trabalhar com dados de séries temporais, manipulando automaticamente a formatação de data e o posicionamento de rótulos.

Usando ax.set_xticklabels()

Este método oferece mais controle, permitindo que você personalize os rótulos antes da rotação.


import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)
y = np.random.rand(10)
labels = ['Rótulo ' + str(i) for i in x]

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xticklabels(labels, rotation=70)
plt.show()

Usando plt.setp()

plt.setp() fornece uma maneira concisa de modificar as propriedades existentes de rótulos de ticks, incluindo rotação.


import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)
y = np.random.rand(10)

fig, ax = plt.subplots()
ax.plot(x, y)
plt.setp(ax.get_xticklabels(), rotation=30)
plt.show()

Usando ax.tick_params()

Para controle preciso sobre várias propriedades de ticks, incluindo rotação, ax.tick_params() é a opção mais versátil.


import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)
y = np.random.rand(10)

fig, ax = plt.subplots()
ax.plot(x, y)
ax.tick_params(axis='x', labelrotation=60)
plt.show()

Otimizando o Alinhamento de Rótulos

Independentemente do método escolhido, o alinhamento adequado é crucial para a legibilidade. O parâmetro ha (alinhamento horizontal) (‘left’, ‘center’, ‘right’) dentro de plt.xticks() ou ax.set_xticklabels() controla o posicionamento horizontal. Experimente para encontrar o alinhamento ideal para sua plotagem. Considere sempre usar plt.tight_layout() para evitar a sobreposição de rótulos.

Ao dominar essas técnicas, você pode criar gráficos Matplotlib claros e informativos, mesmo com rótulos de eixo x complexos ou longos.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *