Rótulos, títulos e salvamento de gráficos
Adicione rótulos aos eixos, um título, uma legenda e formatação das marcas dos eixos; depois salve gráficos com qualidade para publicação usando savefig().
Rótulos, títulos e salvamento de gráficos é uma aula grátis de Pandas & NumPy Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Pandas & NumPy Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Pandas & NumPy Academy inclui 4 aulas no total.
Do Gráfico à Publicação
Um gráfico só é eficaz quando seus eixos estão identificados, seu título explica a principal conclusão e ele é salvo com resolução suficiente para o meio em que será usado. Esta lição aborda os toques finais que transformam um gráfico exploratório rápido em uma figura refinada, adequada para um relatório, painel ou publicação acadêmica: rótulos dos eixos, formatação das marcas, títulos, legendas, anotações e exportação de arquivos.
Rótulos dos Eixos com set_xlabel e set_ylabel
Defina rótulos descritivos para os eixos com ax.set_xlabel() e ax.set_ylabel(). Sempre inclua as unidades no rótulo (por exemplo, 'Revenue (USD)' em vez de apenas 'Revenue'). Use fontsize para aumentar os rótulos em apresentações e labelpad para adicionar espaço entre o eixo e o texto do rótulo quando as marcas forem grandes.
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(figsize=(7, 4))
x = np.arange(1, 13)
y = np.random.randint(100, 500, 12)
ax.plot(x, y, 'o-', color='steelblue')
ax.set_xlabel('Month', fontsize=12, labelpad=8)
ax.set_ylabel('Revenue (USD thousands)', fontsize=12, labelpad=8)
# plt.show()
plt.close()Títulos com set_title e suptitle
ax.set_title() define o título acima de um único Axes. Em figuras com vários painéis, fig.suptitle() adiciona um título compartilhado acima de todos os subplots. Controle o tamanho da fonte com fontsize e a posição vertical com y (o padrão é 1.0). Um bom título apresenta a principal conclusão do gráfico, não apenas o que os eixos representam — compare 'Monthly Revenue' com 'Revenue Peaked in Q3 and Fell 20% in Q4'.
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))
ax1.plot([1,2,3], [1,4,9])
ax1.set_title('Subplot One', fontsize=11)
ax2.bar(['A','B','C'], [3,7,2])
ax2.set_title('Subplot Two', fontsize=11)
# Shared figure title
fig.suptitle('Annual Overview Dashboard', fontsize=14, fontweight='bold', y=1.02)
plt.tight_layout()
plt.close()Controlando os Rótulos das Marcas
Os rótulos padrão das marcas do Matplotlib costumam ser adequados, mas às vezes você precisa de rótulos personalizados. Use ax.set_xticks() para especificar as posições das marcas e ax.set_xticklabels() para definir os rótulos. Passe rotation=45 para inclinar rótulos longos e evitar que se sobreponham. O parâmetro ha='right' (alinhamento horizontal) garante que os rótulos inclinados fiquem ancorados corretamente na marca correspondente.
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
values = np.random.randint(200, 600, 12)
fig, ax = plt.subplots(figsize=(9, 4))
ax.bar(range(12), values, color='steelblue')
ax.set_xticks(range(12))
ax.set_xticklabels(months, rotation=45, ha='right', fontsize=10)
ax.set_ylabel('Revenue')
plt.tight_layout()
plt.close()Formatando os Valores das Marcas
Use os formatadores de matplotlib.ticker para exibir os valores das marcas em um formato fácil de ler. FuncFormatter recebe uma função que recebe o valor da marca e retorna uma cadeia de caracteres formatada. Padrões comuns incluem separador de milhares, símbolo de moeda, sinal de porcentagem e notação científica. Aplique-o com ax.yaxis.set_major_formatter(formatter).
from matplotlib.ticker import FuncFormatter
def millions_fmt(x, pos):
return f'${x/1e6:.1f}M'
fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(['Q1', 'Q2', 'Q3', 'Q4'], [1.2e6, 1.8e6, 2.1e6, 1.9e6], color='steelblue')
ax.yaxis.set_major_formatter(FuncFormatter(millions_fmt))
ax.set_title('Quarterly Revenue')
ax.set_ylabel('Revenue')
plt.tight_layout()
plt.close()Legendas com ax.legend()
Chame ax.legend() para exibir uma legenda de todos os elementos do gráfico que tenham um parâmetro label definido. Personalize-a com loc (posição, por exemplo, 'upper right' e 'lower left'), ncol (número de colunas), framealpha (transparência da caixa) e fontsize. Para colocar a legenda fora da área do gráfico, use bbox_to_anchor em conjunto com loc.
fig, ax = plt.subplots(figsize=(7, 4))
for region, color in [('East','steelblue'),('West','coral'),('North','green')]:
ax.plot(range(12), np.random.randint(100, 400, 12),
marker='o', label=region, color=color)
ax.legend(loc='upper right', ncol=1, framealpha=0.8, fontsize=10)
ax.set_title('Monthly Sales by Region')
plt.close()Adicionando Anotações de Texto
ax.annotate(text, xy=(x_point, y_point), xytext=(x_text, y_text), arrowprops=...) adiciona um rótulo de texto com uma seta opcional apontando para um ponto específico dos dados. Use isso para destacar valores máximos, anomalias ou eventos importantes em um gráfico. O dicionário arrowprops controla o estilo da seta: arrowstyle='->' é uma seta simples.
y_vals = np.array([120, 180, 310, 250, 420, 380, 290])
x_vals = np.arange(len(y_vals))
peak_idx = np.argmax(y_vals)
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x_vals, y_vals, 'o-', color='steelblue')
ax.annotate(f'Peak: {y_vals[peak_idx]}',
xy=(peak_idx, y_vals[peak_idx]),
xytext=(peak_idx - 2, y_vals[peak_idx] + 30),
arrowprops={'arrowstyle': '->', 'color': 'red'},
fontsize=10, color='red')
plt.close()Adicionando Linhas de Referência Horizontais e Verticais
ax.axhline(y_value) desenha uma linha horizontal por toda a largura do Axes no valor y especificado. ax.axvline(x_value) desenha uma linha vertical. Ambas aceitam os parâmetros color, linestyle e linewidth. Linhas de referência são usadas com frequência para marcar metas, limites ou datas de eventos em gráficos de séries temporais.
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(range(10), np.random.randint(100, 400, 10), 'o-', color='steelblue')
# Target line
ax.axhline(y=250, color='red', linestyle='--', lw=1.5, label='Target')
# Event line
ax.axvline(x=5, color='orange', linestyle=':', lw=1.5, label='Campaign start')
ax.legend()
ax.set_title('Revenue vs Target')
plt.close()Estilizando com Temas
O Matplotlib inclui várias folhas de estilo integradas que alteram a aparência geral de todas as figuras sem mudanças no código: 'seaborn-v0_8-whitegrid', 'fivethirtyeight', 'ggplot', 'bmh' etc. Aplique um estilo com plt.style.use('style_name') no início do seu script. Use plt.style.context('style_name') como gerenciador de contexto para aplicar um estilo apenas dentro de um bloco.
# Apply a style globally
plt.style.use('seaborn-v0_8-whitegrid')
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(range(10), np.random.randn(10).cumsum())
ax.set_title('Seaborn Whitegrid Style')
plt.close()
# Reset to default
plt.rcdefaults()Salvando Figuras com savefig()
fig.savefig('filename.png') salva a figura em um arquivo. Parâmetros importantes: dpi (pontos por polegada — use 150 para a tela e 300 para impressão), bbox_inches='tight' (evita que os rótulos sejam cortados) e format (inferido da extensão ou especificado explicitamente). Formatos comuns: '.png' (raster, adequado para a web), '.pdf' (vetorial, adequado para impressão) e '.svg' (vetorial, editável no Illustrator).
fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(range(10), np.random.randn(10), 'o-')
ax.set_title('Export Example')
ax.set_xlabel('Step')
ax.set_ylabel('Value')
# Save as PNG (screen quality)
fig.savefig('/tmp/chart_screen.png', dpi=150, bbox_inches='tight')
# Save as PDF (print quality)
fig.savefig('/tmp/chart_print.pdf', dpi=300, bbox_inches='tight')
plt.close()
print('Figures saved.')Exemplo Completo: Gráfico Refinado para Relatório
Este é um fluxo de trabalho completo que combina todas as técnicas desta lição: um gráfico refinado de série temporal com rótulos dos eixos, marcas do eixo y formatadas, uma linha horizontal de meta, uma anotação no pico e exportação para um PNG de alta resolução. Este é o padrão que você usará para qualquer gráfico incluído em um relatório ou painel.
from matplotlib.ticker import FuncFormatter
fig, ax = plt.subplots(figsize=(9, 5))
months = list(range(1, 13))
revenue = [120, 145, 132, 160, 175, 190, 210, 185, 220, 200, 240, 260]
peak = max(revenue)
peak_idx = revenue.index(peak)
ax.plot(months, revenue, 'o-', color='steelblue', lw=2, markersize=6)
ax.axhline(y=180, color='red', ls='--', lw=1.2, label='Target: $180K')
ax.annotate(f'Peak ${peak}K', xy=(peak_idx+1, peak),
xytext=(peak_idx-1.5, peak+15),
arrowprops={'arrowstyle': '->'}, fontsize=9)
ax.set_xticks(months)
ax.set_xticklabels(['Jan','Feb','Mar','Apr','May','Jun',
'Jul','Aug','Sep','Oct','Nov','Dec'], rotation=45, ha='right')
ax.yaxis.set_major_formatter(FuncFormatter(lambda x,p: f'${x:.0f}K'))
ax.set_title('2024 Monthly Revenue vs Target', fontsize=13, fontweight='bold')
ax.set_ylabel('Revenue')
ax.legend()
plt.tight_layout()
plt.close()Verificação Rápida
Teste sua compreensão sobre rótulos, títulos e salvamento de figuras nesta lição.
Recapitulação da Lição
Nesta lição, você aprendeu que set_xlabel()/set_ylabel()/set_title() adicionam texto descritivo; FuncFormatter formata os valores das marcas como moeda ou porcentagens; ax.annotate() adiciona rótulos de texto com setas para destacar pontos importantes dos dados; axhline()/axvline() desenham linhas de referência; e fig.savefig() com dpi e bbox_inches='tight' produz exportações com qualidade para publicação. Isso conclui o curso de Fundamentos do Matplotlib — a seguir, veremos o Seaborn para gráficos estatísticos.
Perguntas Frequentes
A aula “Rótulos, títulos e salvamento de gráficos” é grátis?
Sim — o texto completo de “Rótulos, títulos e salvamento de gráficos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Pandas & NumPy Academy, atualize para CoddyKit PRO. O curso de Pandas & NumPy Academy inclui 4 aulas no total.
O que vou aprender em “Rótulos, títulos e salvamento de gráficos”?
Adicione rótulos aos eixos, um título, uma legenda e formatação das marcas dos eixos; depois salve gráficos com qualidade para publicação usando savefig(). Você pratica Pandas & NumPy Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Pandas & NumPy Academy?
Nenhuma experiência prévia é necessária. Pandas & NumPy Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Rótulos, títulos e salvamento de gráficos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Pandas & NumPy Academy?
Sim. Cada aula de Pandas & NumPy Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Arquitetura de Figure e Axes
- Gráficos de linhas e dispersão
- Gráficos de barras e histogramas
- Rótulos, títulos e salvamento de gráficos