Movendo Rótulos do Eixo X para o Topo

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Neste tutorial, aprenderemos como mover os rótulos de marcação do eixo x para o topo do gráfico usando a biblioteca Matplotlib do Python. Por padrão, o Matplotlib coloca os rótulos do eixo x na parte inferior do gráfico. No entanto, às vezes podemos querer colocá-los no topo para uma melhor visualização, especialmente ao lidar com gráficos congestionados ou rótulos longos que podem se sobrepor a outros elementos.

Esta técnica é particularmente útil em cenários de visualização de dados onde você precisa otimizar o uso do espaço e melhorar a legibilidade de seus gráficos. Criaremos um gráfico simples e aprenderemos como manipular a posição dos rótulos de marcação passo a passo.

Dicas da VM

Após a conclusão da inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook para acessar o Jupyter Notebook para praticar.

click-notebook

Você pode precisar esperar alguns segundos para que o Jupyter Notebook termine de carregar. Devido a limitações no Jupyter Notebook, a validação das operações não pode ser automatizada.

Se você encontrar algum problema durante este tutorial, sinta-se à vontade para perguntar ao Labby. Por favor, forneça feedback após a sessão para que possamos resolver prontamente quaisquer problemas.

Entendendo o Matplotlib e Criando um Notebook

Neste primeiro passo, aprenderemos sobre o Matplotlib e criaremos um novo notebook Jupyter para nossa tarefa de visualização.

O que é Matplotlib?

Matplotlib é uma biblioteca abrangente para criar visualizações estáticas, animadas e interativas em Python. Ela fornece uma API orientada a objetos para incorporar gráficos em aplicativos e é amplamente utilizada para visualização de dados por cientistas, engenheiros e analistas de dados.

Criar um Novo Notebook

Na primeira célula do seu notebook, vamos importar a biblioteca Matplotlib. Digite o seguinte código e execute a célula pressionando Shift+Enter:

import matplotlib.pyplot as plt
import numpy as np

## Check the Matplotlib version
print(f"NumPy version: {np.__version__}")
libraries-imported

Ao executar este código, você deverá ver uma saída semelhante a:

NumPy version: 2.0.0

O número da versão exata pode variar dependendo do seu ambiente.

Agora temos o Matplotlib importado e pronto para usar. plt é um alias convencional usado para o módulo pyplot, que fornece uma interface semelhante ao MATLAB para criar gráficos.

Criando um Gráfico Básico com Configurações Padrão

Agora que importamos o Matplotlib, vamos criar um gráfico simples com as configurações padrão para entender como os eixos e os rótulos de marcação são posicionados por padrão.

Entendendo os Componentes do Matplotlib

No Matplotlib, os gráficos consistem em vários componentes:

  • Figure (Figura): O contêiner geral para o gráfico
  • Axes (Eixos): A área onde os dados são plotados com seu próprio sistema de coordenadas
  • Axis (Eixo): Os objetos semelhantes a linhas numéricas que definem o sistema de coordenadas
  • Ticks (Marcações): As marcas nos eixos que denotam valores específicos
  • Tick Labels (Rótulos de Marcação): Os rótulos de texto que indicam o valor em cada marcação

Por padrão, os rótulos de marcação do eixo x aparecem na parte inferior do gráfico.

Criando um Gráfico Simples

Em uma nova célula no seu notebook, vamos criar um gráfico de linha simples:

## Create a figure and a set of axes
fig, ax = plt.subplots(figsize=(8, 5))

## Generate some data
x = np.arange(0, 10, 1)
y = np.sin(x)

## Plot the data
ax.plot(x, y, marker='o', linestyle='-', color='blue', label='sin(x)')

## Add a title and labels
ax.set_title('A Simple Sine Wave Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis (sin(x))')

## Add a grid and legend
ax.grid(True, linestyle='--', alpha=0.7)
ax.legend()

## Display the plot
plt.show()

print("Notice that the x-axis tick labels are at the bottom of the plot by default.")

Ao executar este código, você verá um gráfico de onda senoidal com os rótulos de marcação do eixo x na parte inferior do gráfico, que é a posição padrão no Matplotlib.

Reserve um momento para observar como o gráfico é estruturado e onde os rótulos de marcação estão posicionados. Essa compreensão nos ajudará a apreciar as mudanças que faremos no próximo passo.

Movendo os Rótulos de Marcação do Eixo X para o Topo

Agora que entendemos o posicionamento padrão dos rótulos de marcação, vamos mover os rótulos de marcação do eixo x para o topo do gráfico.

Entendendo os Parâmetros de Marcação

O Matplotlib fornece o método tick_params() para controlar a aparência das marcações e dos rótulos de marcação. Este método nos permite:

  • Mostrar/ocultar marcações e rótulos de marcação
  • Alterar sua posição (topo, inferior, esquerda, direita)
  • Ajustar seu tamanho, cor e outras propriedades

Criando um Gráfico com Rótulos de Marcação do Eixo X no Topo

Vamos criar um novo gráfico com os rótulos de marcação do eixo x movidos para o topo:

## Create a new figure and a set of axes
fig, ax = plt.subplots(figsize=(8, 5))

## Generate some data
x = np.arange(0, 10, 1)
y = np.cos(x)

## Plot the data
ax.plot(x, y, marker='s', linestyle='-', color='green', label='cos(x)')

## Move the x-axis tick labels to the top
ax.tick_params(
    axis='x',         ## Apply changes to the x-axis
    top=True,         ## Show ticks on the top side
    labeltop=True,    ## Show tick labels on the top side
    bottom=False,     ## Hide ticks on the bottom side
    labelbottom=False ## Hide tick labels on the bottom side
)

## Add a title and labels
ax.set_title('Cosine Wave with X-Axis Tick Labels at the Top')
ax.set_xlabel('X-axis (now at the top!)')
ax.set_ylabel('Y-axis (cos(x))')

## Add a grid and legend
ax.grid(True, linestyle='--', alpha=0.7)
ax.legend()

## Display the plot
plt.show()

print("Now the x-axis tick labels are at the top of the plot!")

Ao executar este código, você verá um gráfico de onda cosseno com os rótulos de marcação do eixo x no topo do gráfico.

Observe como o método tick_params() é usado com vários parâmetros:

  • axis='x': Especifica que queremos modificar o eixo x
  • top=True e labeltop=True: Torna as marcações e os rótulos visíveis no topo
  • bottom=False e labelbottom=False: Oculta as marcações e os rótulos na parte inferior

Isso nos dá uma visão clara dos dados com os rótulos do eixo x posicionados no topo, em vez de na parte inferior.

Personalizando o Gráfico Ainda Mais

Agora que movemos os rótulos de marcação do eixo x para o topo, vamos personalizar ainda mais nosso gráfico para torná-lo mais visualmente atraente e informativo.

Técnicas Avançadas de Personalização de Gráficos

O Matplotlib oferece inúmeras opções para personalizar gráficos. Vamos explorar algumas dessas opções:

## Create a new figure and a set of axes
fig, ax = plt.subplots(figsize=(10, 6))

## Generate some data with more points for a smoother curve
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)

## Plot multiple datasets
ax.plot(x, y1, linewidth=2, color='blue', label='sin(x)')
ax.plot(x, y2, linewidth=2, color='red', label='cos(x)')

## Fill the area between curves
ax.fill_between(x, y1, y2, where=(y1 > y2), alpha=0.3, color='green', interpolate=True)
ax.fill_between(x, y1, y2, where=(y1 <= y2), alpha=0.3, color='purple', interpolate=True)

## Move the x-axis tick labels to the top
ax.tick_params(
    axis='x',
    top=True,
    labeltop=True,
    bottom=False,
    labelbottom=False
)

## Customize tick labels
ax.set_xticks(np.arange(0, 2*np.pi + 0.1, np.pi/2))
ax.set_xticklabels(['0', 'π/2', 'π', '3π/2', '2π'])

## Add title and labels with custom styles
ax.set_title('Sine and Cosine Functions with Customized X-Axis Labels at the Top',
             fontsize=14, fontweight='bold', pad=20)
ax.set_xlabel('Angle (radians)', fontsize=12)
ax.set_ylabel('Function Value', fontsize=12)

## Add a grid and customize its appearance
ax.grid(True, linestyle='--', alpha=0.7, which='both')

## Customize the axis limits
ax.set_ylim(-1.2, 1.2)

## Add a legend with custom location and style
ax.legend(loc='upper right', fontsize=12, framealpha=0.8)

## Add annotations to highlight important points
ax.annotate('Maximum', xy=(np.pi/2, 1), xytext=(np.pi/2, 1.1),
            arrowprops=dict(facecolor='black', shrink=0.05, width=1.5),
            fontsize=10, ha='center')

## Display the plot
plt.tight_layout()  ## Adjust spacing for better appearance
plt.show()

print("We have created a fully customized plot with x-axis tick labels at the top!")

Ao executar este código, você verá um gráfico muito mais elaborado e com aparência profissional, com:

  • Duas curvas (seno e cosseno)
  • Regiões coloridas entre as curvas
  • Rótulos de marcação personalizados (usando a notação π)
  • Anotações apontando para recursos importantes
  • Melhor espaçamento e estilo

Observe como mantivemos os rótulos de marcação do eixo x no topo usando o método tick_params(), mas aprimoramos o gráfico com personalizações adicionais.

Entendendo as Personalizações

Vamos detalhar algumas das principais personalizações que adicionamos:

  1. fill_between(): Cria regiões coloridas entre as curvas seno e cosseno
  2. set_xticks() e set_xticklabels(): Personalizam as posições e os rótulos das marcações
  3. tight_layout(): Ajusta automaticamente o espaçamento do gráfico para uma melhor aparência
  4. annotate(): Adiciona texto com uma seta apontando para um ponto específico
  5. Fontes, cores e estilos personalizados para vários elementos

Essas personalizações demonstram como você pode criar gráficos visualmente atraentes e informativos, mantendo os rótulos de marcação do eixo x no topo.

Salvando e Compartilhando Seu Gráfico

A etapa final é salvar seu gráfico personalizado para que você possa incluí-lo em relatórios, apresentações ou compartilhá-lo com outras pessoas.

Salvando Gráficos em Diferentes Formatos

O Matplotlib permite que você salve gráficos em vários formatos, incluindo PNG, JPG, PDF, SVG e muito mais. Vamos aprender como salvar nosso gráfico em diferentes formatos:

## Create a plot similar to our previous customized one
fig, ax = plt.subplots(figsize=(10, 6))

## Generate data
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)

## Plot the data
ax.plot(x, y1, linewidth=2, color='blue', label='sin(x)')
ax.plot(x, y2, linewidth=2, color='red', label='cos(x)')

## Move the x-axis tick labels to the top
ax.tick_params(
    axis='x',
    top=True,
    labeltop=True,
    bottom=False,
    labelbottom=False
)

## Customize tick labels
ax.set_xticks(np.arange(0, 2*np.pi + 0.1, np.pi/2))
ax.set_xticklabels(['0', 'π/2', 'π', '3π/2', '2π'])

## Add title and labels
ax.set_title('Plot with X-Axis Labels at the Top', fontsize=14)
ax.set_xlabel('X-axis at the top')
ax.set_ylabel('Y-axis')

## Add grid and legend
ax.grid(True)
ax.legend()

## Save the figure in different formats
plt.savefig('plot_with_top_xlabels.png', dpi=300, bbox_inches='tight')
plt.savefig('plot_with_top_xlabels.pdf', bbox_inches='tight')
plt.savefig('plot_with_top_xlabels.svg', bbox_inches='tight')

## Show the plot
plt.show()

print("The plot has been saved in PNG, PDF, and SVG formats in the current directory.")

Ao executar este código, o gráfico será salvo em três formatos diferentes:

  • PNG: Um formato de imagem raster bom para a web e uso geral
  • PDF: Um formato vetorial ideal para publicações e relatórios
  • SVG: Um formato vetorial excelente para web e gráficos editáveis

Os arquivos serão salvos no diretório de trabalho atual do seu notebook Jupyter.

Entendendo os Parâmetros de Salvamento

Vamos examinar os parâmetros usados com savefig():

  • dpi=300: Define a resolução (pontos por polegada) para formatos raster como PNG
  • bbox_inches='tight': Ajusta automaticamente os limites da figura para incluir todos os elementos sem espaço em branco desnecessário

Visualizando os Arquivos Salvos

Você pode visualizar os arquivos salvos navegando no navegador de arquivos no Jupyter:

  1. Clique no logotipo "Jupyter" no canto superior esquerdo
  2. No navegador de arquivos, você deve ver os arquivos de imagem salvos
  3. Clique em qualquer arquivo para visualizá-lo ou baixá-lo

Opções Adicionais de Exportação de Gráficos

Para ter mais controle sobre o gráfico salvo, você pode personalizar o tamanho da figura, ajustar o fundo ou alterar o DPI de acordo com suas necessidades:

## Control the background color and transparency
fig.patch.set_facecolor('white')  ## Set figure background color
fig.patch.set_alpha(0.8)          ## Set background transparency

## Save with custom settings
plt.savefig('custom_background_plot.png',
            dpi=400,              ## Higher resolution
            facecolor=fig.get_facecolor(),  ## Use the figure's background color
            edgecolor='none',     ## No edge color
            bbox_inches='tight',  ## Tight layout
            pad_inches=0.1)       ## Add a small padding

print("A customized plot has been saved with specialized export settings.")

Isso demonstra como salvar gráficos com controle preciso sobre o formato e a aparência da saída.

Resumo

Neste tutorial, aprendemos como mover os rótulos de marcação do eixo x de sua posição padrão na parte inferior para o topo do gráfico usando o Matplotlib. Essa técnica pode ser útil ao trabalhar com gráficos que possuem rótulos longos ou quando você precisa otimizar o uso do espaço.

Cobrimos os seguintes pontos-chave:

  1. Compreensão dos fundamentos do Matplotlib e seus componentes, incluindo figuras, eixos e rótulos de marcação
  2. Criação de gráficos simples com configurações padrão para observar a colocação padrão dos rótulos de marcação do eixo x
  3. Usando o método tick_params() para mover os rótulos de marcação do eixo x para o topo do gráfico
  4. Aprimorando o gráfico com personalizações adicionais para torná-lo mais informativo e visualmente atraente
  5. Salvando gráficos em vários formatos para compartilhamento e publicação

Este conhecimento permite que você crie visualizações mais legíveis e profissionais, especialmente ao lidar com conjuntos de dados complexos ou ao trabalhar com gráficos que possuem requisitos de layout específicos.

Para aprofundar seu aprendizado, você pode explorar outras opções de personalização do Matplotlib, como:

  • Criar subplots com diferentes posições de rótulos de marcação
  • Personalizar a aparência das marcações e rótulos de marcação (cor, fonte, tamanho, etc.)
  • Trabalhar com diferentes tipos de gráficos, como gráficos de barras, gráficos de dispersão ou histogramas com posições de marcação personalizadas

A flexibilidade do Matplotlib permite uma extensa personalização para atender às suas necessidades específicas de visualização.