Skip to content

Dominando os Tamanhos de Figuras no Matplotlib: Guia Completo

Updated on

Controlar o tamanho da figura é uma das partes mais importantes para criar visualizações limpas, legíveis e com qualidade de publicação no Matplotlib. Seja para gerar gráficos exploratórios rápidos ou figuras refinadas para relatórios, saber definir e ajustar corretamente os tamanhos de figuras evita gráficos distorcidos, rótulos ilegíveis e layouts inconsistentes.

Este guia cobre todos os métodos comuns e práticos para controlar tamanhos de figuras no Matplotlib, incluindo:

  • Uso de figsize ao criar novas figuras
  • Ajuste de tamanho de figuras já existentes
  • Uso de rcParams para padrões globais
  • Definição de tamanho em centímetros
  • Mudança de tamanho em gráficos do Pandas
  • Redefinição e modificação dinâmica do tamanho global
  • Um guia de solução de problemas
  • Uma tabela comparativa resumindo todos os métodos

⭐ TL;DR — Referência Rápida

TarefaMelhor MétodoExemplo
Definir tamanho para uma nova figuraplt.figure(figsize=(w, h))plt.figure(figsize=(8, 6))
Alterar tamanho de figura existentefig.set_size_inches(w, h)fig.set_size_inches(12, 4)
Definir tamanho padrão globalplt.rcParams["figure.figsize"] = ...(12, 6)
Definir tamanho em gráfico do Pandasdf.plot(figsize=(w, h))(10, 5)
Usar centímetrosConverter cm → inchw_cm / 2.54

Entendendo Tamanhos de Figuras no Matplotlib

O Matplotlib mede o tamanho da figura em polegadas, usando uma tupla (largura, altura).

A forma mais direta de criar uma figura com tamanho fixo é:

from matplotlib.pyplot import figure
 
# Create a new figure (width=8 inches, height=6 inches)
figure(figsize=(8, 6))

Isso garante que o gráfico use exatamente o tamanho especificado, independentemente do conjunto de dados ou do tipo de gráfico.


Ajustando o Tamanho da Figura Depois que Ela Existe

Às vezes uma figura é criada automaticamente — por exemplo, via plt.plot() ou por um gráfico do Pandas. Ainda assim, é possível redimensioná-la depois:

import matplotlib.pyplot as plt
 
# Get the current figure
fig = plt.gcf()
 
# Change its size to 18.5 x 10.5 inches
fig.set_size_inches(18.5, 10.5)
 
# Save the resized figure
fig.savefig("figure.png", dpi=100)

set_size_inches() é a forma mais confiável de redimensionar figuras após sua criação.


Definindo Tamanho Padrão Global de Figuras com rcParams

Se você quer que todos os seus gráficos sigam o mesmo tamanho (útil em notebooks e scripts), configure um padrão global:

import matplotlib.pyplot as plt
 
# Make all future figures 20 x 3 inches
plt.rcParams["figure.figsize"] = (20, 3)

Isso afeta todos os gráficos subsequentes até que seja sobrescrito.


Definindo Tamanho da Figura em Centímetros

Se você precisa de medidas em sistema métrico (por exemplo, para artigos acadêmicos), converta centímetros → polegadas:

width_cm = 20
height_cm = 10
 
# Convert cm to inches
width_in = width_cm / 2.54
height_in = height_cm / 2.54
 
# Use the converted size
figure(figsize=(width_in, height_in))

Isso funciona de forma idêntica à abordagem baseada em polegadas.


Redefinindo ou Alterando Dinamicamente os Padrões Globais

Para retornar às configurações originais do Matplotlib:

plt.rcParams["figure.figsize"] = plt.rcParamsDefault["figure.figsize"]

Isso é útil quando um notebook mistura gráficos pequenos e rápidos com figuras maiores para publicação.


Controlando o Tamanho da Figura com Pandas

Pandas integra diretamente com Matplotlib e também aceita figsize:

df['some_column'].plot(figsize=(10, 5))

Para subplots:

fig, ax = plt.subplots(figsize=(10, 5))
df['some_column'].plot(ax=ax)

Esse método é especialmente conveniente em notebooks de análise de dados.


Alterando o Tamanho Padrão de Figuras do Matplotlib para Todos os Gráficos

Use isto se quiser que todo gráfico siga automaticamente o mesmo tamanho:

import matplotlib
 
matplotlib.rc("figure", figsize=(10, 5))

Isso é semelhante a modificar rcParams diretamente e funciona em scripts e notebooks.


🔍 Comparação de Todos os Métodos

MétodoQuando UsarExemplo
figure(figsize=...)Ao criar uma figura totalmente novaMais recomendado
set_size_inches()Redimensionar uma figura existenteBom para gráficos gerados auto.
plt.rcParams["figure.figsize"]Definir padrão global dentro de notebookMais comum em EDA
matplotlib.rc("figure", figsize=...)Definir padrões globais em um scriptMelhor para produção
Conversão para centímetrosContextos acadêmicos, exigências de editorPara artigos em LaTeX
df.plot(figsize=...)Fluxo de trabalho com PandasConveniente para EDA rápida

⚠️ Solução de Problemas: Quando figsize Não Funciona (Erros Comuns)

1. Jupyter Notebook ignora figsize

Correção:

%matplotlib inline

2. tight_layout corta rótulos

Use:

plt.tight_layout()

3. Ao salvar, o tamanho da figura muda

Sempre defina o DPI explicitamente:

plt.savefig("output.png", dpi=150)

4. Fontes ou rótulos mudam de escala de forma inesperada

Desative o autolayout:

plt.rcParams['figure.autolayout'] = False

5. Subplots se sobrepõem

Aumente o tamanho:

fig, ax = plt.subplots(figsize=(12, 8))

Essas seções de solução de problemas são altamente relevantes para buscas sobre Matplotlib e ajudam a resolver frustrações comuns de usuários.


Alternativa ao Matplotlib: Visualize Dados com PyGWalker

Além do Matplotlib, você pode explorar seu DataFrame do Pandas visualmente usando PyGWalker, uma ferramenta open-source de visualização de dados com interface de arrastar e soltar:

PyGWalker for Data visualization (opens in a new tab)

Use dentro do Jupyter:

pip install pygwalker
import pygwalker as pyg
 
gwalker = pyg.walk(df)

Ou experimente online:

Kaggle NotebookGoogle ColabGitHub ⭐
https://www.kaggle.com/asmdef/pygwalker-test (opens in a new tab)https://colab.research.google.com/drive/171QUQeq-uTLgSj1u-P9DQig7Md1kpXQ2 (opens in a new tab)https://github.com/Kanaries/pygwalker (opens in a new tab)

Perguntas Frequentes

  1. Como defino o tamanho da figura no Matplotlib?
    Use figure(figsize=(width, height)).

  2. Como redimensiono uma figura existente?
    Use fig.set_size_inches(w, h).

  3. Posso mudar o tamanho da figura em gráficos do Pandas?
    Sim, usando figsize=(w, h).