Desmistificando %matplotlib inline
em Notebooks Jupyter

Se você tem experimentado visualizações de dados em Python em Notebooks Jupyter (ou usando ferramentas como o Google Colab), provavelmente já se deparou com uma linha estranha no início de muitos notebooks: %matplotlib inline
. À primeira vista, isso parece alguma espécie de encantamento mágico – e, de certa forma, é! Neste guia acessível para iniciantes, explicaremos exatamente o que o %matplotlib inline
faz, quando usá-lo, como utilizá-lo (com exemplos de código) e se você realmente precisa dele nos ambientes modernos do Jupyter. Ao final, você saberá por que essa pequena "magia" é tão comum e como ela faz seus gráficos do Matplotlib aparecerem inline (diretamente abaixo do seu código). Então, vamos lá!
O que é %matplotlib inline
?
%matplotlib inline
é um comando mágico especial disponível no IPython e nos notebooks Jupyter. Comandos mágicos (indicados pelo prefixo %
) não são código Python comum, mas comandos que configuram o comportamento do kernel IPython (Built-in magic commands — IPython 9.1.0 documentation (opens in a new tab)). Nesse caso, %matplotlib inline
informa ao Jupyter para usar o backend "inline" do Matplotlib, o que significa que os gráficos serão exibidos inline dentro da saída do notebook, logo abaixo da célula de código que os gerou (Exploring Matplotlib Inline: A Quick Tutorial | DataCamp (opens in a new tab)) (Jupyter Notebook Matplotlib Inline: A Beginner's Guide | Saturn Cloud Blog (opens in a new tab)).
Simplificando, usar %matplotlib inline
é como dizer ao Jupyter: "Ei, quando eu criar um gráfico com o Matplotlib, por favor, exiba-o aqui mesmo no notebook, não em uma janela separada." Normalmente (sem essa configuração), Matplotlib pode tentar abrir uma janela nova ou um visualizador interativo para mostrar seu gráfico, ou você pode apenas ver uma representação de texto do objeto do gráfico ao invés do gráfico real (Jupyter Notebook Matplotlib Inline: A Beginner's Guide | Saturn Cloud Blog (opens in a new tab)). O comando %matplotlib inline
evita isso ao embedar a saída do gráfico na página do notebook.
Por que "inline"? Internamente, o Matplotlib tem o conceito de diferentes backends (pense neles como motores ou ferramentas que o Matplotlib usa para renderizar gráficos) (What does %matplotlib inline do? | Medium (opens in a new tab)). Alguns backends abrem uma janela externa para exibir os gráficos (como uma janela gráfica), enquanto outros podem exibir dentro do Jupyter. O backend inline é aquele que renderiza o gráfico como uma imagem estática dentro do próprio notebook (What does %matplotlib inline do? | Medium (opens in a new tab)). Executando %matplotlib inline
, você está selecionando o backend inline do Matplotlib para plotagem. Isso é especialmente útil para análise de dados, pois normalmente você quer que seus gráficos e código fiquem juntos em um só lugar (por isso o nome "inline").
E sim, o %
no começo é o motivo pelo qual chamamos de comando "mágico" – é um comando específico do Jupyter, não parte da sintaxe padrão do Python (Built-in magic commands — IPython 9.1.0 documentation (opens in a new tab)). Você não colocaria %matplotlib inline
em um script Python comum (isso causaria um erro de sintaxe lá), mas em um Notebook Jupyter ou sessão IPython, ele faz sua mágica para configurar o gráfico.
Quando (e Por quê) Devemos Usar %matplotlib inline
?
%matplotlib inline
é mais útil quando você trabalha em um ambiente interativo como Jupyter Notebook ou JupyterLab e quer ver seus gráficos imediatamente como saída no seu notebook. Essa é a situação padrão para exploração de dados, ciência de dados e tutoriais. Aqui estão cenários específicos e razões para usá-lo:
-
Análise interativa de dados: Se estiver explorando dados em um notebook, criará muitos gráficos para visualizar padrões. A configuração inline permite que você veja cada gráfico logo abaixo do código que o gerou, facilitando a comparação entre código e saída. Você não precisa alternar para outra janela ou interface para ver seu gráfico – ele aparece inline com seu código, mantendo seu fluxo de trabalho (Jupyter Notebook Matplotlib Inline: A Beginner's Guide | Saturn Cloud Blog (opens in a new tab)) (Jupyter Notebook Matplotlib Inline: A Beginner's Guide | Saturn Cloud Blog (opens in a new tab)). Isto é especialmente útil em trabalhos iterativos: você pode ajustar um comando de plotagem e reexecutar a célula para ver o gráfico atualizado instantaneamente.
-
Manter resultados juntos: Gráficos inline facilitam compartilhar notebooks ou manter um registro de sua análise. Ao salvar ou exportar o notebook (para HTML ou PDF, por exemplo), os gráficos são embutidos como imagens. Isso significa que outros podem ver os gráficos ao visualizar seu notebook sem precisar de arquivos adicionais. Tudo (código + gráficos) fica autocontido.
-
Conjuntos de dados grandes ou visualizações complexas: Quando trabalha com cálculos pesados ou gráficos detalhados, pode gerar múltiplos gráficos para entender os dados. Plotagens inline permitem empilhar esses visuais no notebook para facilitar a rolagem e comparação (Jupyter Notebook Matplotlib Inline: A Beginner's Guide | Saturn Cloud Blog (opens in a new tab)). Você pode intercalar explicações (texto markdown) entre os gráficos, criando uma narrativa com auxiliares visuais – algo fundamental na experiência do notebook.
-
Uso educativo e tutoriais: Muitos tutoriais incluem
%matplotlib inline
no início para que os aprendizes vejam os gráficos de saída diretamente no notebook do tutorial. Isso garante que os novatos não fiquem confusos se nenhum gráfico aparecer. (Afinal, nada é mais frustrante do que executar um comando de plotagem e não ver nada acontecer porque o gráfico foi aberto em uma janela invisível ou requer um comando especial para exibir!)
Por outro lado, se você não estiver em um ambiente Jupyter – por exemplo, se estiver escrevendo um script Python independente ou usando um interpretador Python fora do IPython – então %matplotlib inline
não se aplica. Em um script comum, normalmente você cria um gráfico e depois chama plt.show()
para abrir uma janela com o gráfico. O comando mágico %matplotlib inline
é só para ambientes IPython/Jupyter para fazer os gráficos serem embedados.
Resumindo: use %matplotlib inline
quando desejar que os gráficos do Matplotlib apareçam no seu notebook, logo abaixo do código, sem passos extras. Isso é quase sempre desejável ao trabalhar em Jupyter para análise ou visualização de dados.
Como Usar %matplotlib inline
(Exemplo)
Usar %matplotlib inline
é bem simples. Basta colocá-lo em uma célula do Notebook (geralmente no topo, após suas importações), e isso configurará o ambiente para plotagens inline. Normalmente, você também importa o Matplotlib (principalmente o módulo pyplot
) na mesma célula ou antes de criar gráficos. Por exemplo:
# No início do seu Notebook:
%matplotlib inline
import matplotlib.pyplot as plt
# Agora você pode criar gráficos normalmente
plt.figure(figsize=(4,3))
plt.plot([1, 2, 3], [2, 4, 6], color="blue", marker="o")
plt.title("Exemplo de Gráfico")
plt.xlabel("Valores de X")
plt.ylabel("Valores de Y")
plt.show()
Vamos entender o que acontece aqui:
%matplotlib inline
– esse comando mágico configura o notebook para mostrar gráficos inline (Jupyter Notebook Matplotlib Inline: A Beginner's Guide | Saturn Cloud Blog (opens in a new tab)). Ele não produz saída visível por si só; apenas muda a configuração interna.- Importando
matplotlib.pyplot como plt
– importamos a biblioteca de plotagem (pyplot) comoplt
por conveniência. Esse é o modo padrão de usar o Matplotlib. - Criando um gráfico – geramos um gráfico de linha simples (com alguns dados fictícios e rótulos).
plt.show()
– essa função diz ao Matplotlib para exibir a figura. Em um notebook interativo com modo inline, chamarplt.show()
é opcional (os gráficos costumam exibir automaticamente ao final da célula no modo inline), mas é uma prática recomendada para deixar claro. Garante que o gráfico seja renderizado neste momento.
A seguir, vamos mostrar a diferença entre não usar %matplotlib inline
e usá-lo:
-
Sem
%matplotlib inline
: Se você não executar o comando mágico em um Notebook Jupyter, o que acontece ao fazer um plot? Em alguns ambientes, o gráfico pode tentar abrir em uma janela nova (que pode não funcionar em um notebook baseado em navegador), ou o Jupyter apenas mostrará uma representação textual do objeto do gráfico (por exemplo, algo comomatplotlib.lines.Line2D object at 0x...
como saída) ao invés do gráfico real (python - Is %matplotlib inline still needed? - Stack Overflow (opens in a new tab)). Você precisaria então chamarplt.show()
manualmente para exibir o gráfico, e mesmo assim poderia aparecer como uma janela externa. Isso é inconveniente e fácil de perder. -
Com
%matplotlib inline
: Quando você tem esse comando mágico, assim que executa um código de plotagem (por exemplo, uma célula com comandos de desenho), o gráfico será exibido logo abaixo daquela célula na saída do notebook (Jupyter Notebook Matplotlib Inline: A Beginner's Guide | Saturn Cloud Blog (opens in a new tab)). Sem janelas separadas, sem passos adicionais – ele fica naquele local. Mesmo que você não chame explicitamenteplt.show()
, o Jupyter irá gerar a saída do gráfico ao final da célula no modo inline. O gráfico será renderizado como uma imagem (PNG por padrão) embutida no notebook. Isso torna tudo mais fácil para ver o resultado do seu código de plotagem imediatamente.
Resumindo: com %matplotlib inline
, seus gráficos permanecem dentro do notebook; sem ele, você pode não ver os gráficos (ou eles podem aparecer em outro lugar). O comando mágico basicamente “streamlines” a exibição dos gráficos nos notebooks (Exploring Matplotlib Inline: A Quick Tutorial | DataCamp (opens in a new tab)). Uma vez ativado, você continua usando o Matplotlib normalmente — a única diferença é onde os gráficos aparecem.
Dica: É comum incluir %matplotlib inline
bem no começo do seu notebook (logo após suas importações). Assim, garante que todas as células subsequentes que gerarem gráficos terão os gráficos embedados inline. Alguns usam ponto-e-vírgula (;
) ao final de comandos de plotagem (por exemplo, plt.plot(...);
) para suprimir a saída textual (a lista de objetos Line2D) e mostrar só o gráfico. Isso é opcional, mas pode deixar seu notebook mais limpo ao esconder a representação Python do objeto de gráfico.
Ainda Precisamos de %matplotlib inline
Hoje?
Você pode estar pensando: "Se é tão útil, por que parar de usá-lo?" A verdade é que nos ambientes recentes do Jupyter, muitas vezes não é mais necessário chamá-lo explicitamente – ele muitas vezes já vem ativado por padrão. (O que faz %matplotlib inline? | Medium (opens in a new tab)) (Exploring Matplotlib Inline: A Quick Tutorial | DataCamp (opens in a new tab)). Por exemplo, se você roda import matplotlib.pyplot as plt
em um novo Notebook, é provável que o backend já esteja configurado como inline nos bastidores, mesmo sem você escrever o comando mágico. É por isso que muitas vezes notebooks antigos ou exemplos mostram gráficos aparecendo sem %matplotlib inline
.
Na verdade, a documentação oficial e relatórios de bugs apontam que, na maioria dos casos, usar %matplotlib inline
não é mais estritamente necessário se você estiver usando as APIs padrão (como plt.plot
ou métodos .plot()
do pandas) (python - Is %matplotlib inline still needed? - Stack Overflow (opens in a new tab)). Basta importar matplotlib ou pandas para que o backend inline seja ativado automaticamente na maioria das configurações do Jupyter. Então, se você esquecer de adicioná-lo, pode nem perceber diferença – seus gráficos podem continuar aparecendo inline porque o ambiente cuidou disso para você.
Por outro lado, isso não quer dizer que você nunca deva usá-lo. Aqui estão alguns pontos:
-
Compatibilidade e clareza: Colocar
%matplotlib inline
pode ser uma forma de documentar seu notebook. Torna explícito que os gráficos devem aparecer inline. Se alguém executar seu notebook em uma configuração mais antiga, ou com uma configuração IPython diferente que não inline os gráficos automaticamente, ter esse comando garante que os gráficos aparecerão como esperado (Exploring Matplotlib Inline: A Quick Tutorial | DataCamp (opens in a new tab)). É uma "segurança" de uma linha que garante a visualização das suas imagens. Muitos ainda o colocam no início por hábito ou para evitar confusões. -
Cenários legados: Se você usa versões antigas do Jupyter ou trabalha em ambientes como Jupyter Console ou kernels remotos, às vezes ainda é necessário usar explicitamente o
%matplotlib inline
para obter o comportamento embutido. Por exemplo, alguns serviços de notebooks na nuvem ou JupyterLite (que roda inteiramente no navegador) tiveram diferenças na exibição de gráficos, onde o comando mágico fazia a diferença (python - Is %matplotlib inline still needed? - Stack Overflow (opens in a new tab)). Então, nem sempre é obsoleto em todos os cenários. -
Usos avançados: Uma situação mais rara para iniciantes é se você estiver usando o Matplotlib de uma forma muito customizada, sem a interface
pyplot
. Nesses casos, o backend inline pode não ativar automaticamente (python - Is %matplotlib inline still needed? - Stack Overflow (opens in a new tab)). Contudo, para a maioria dos usuários, isso não é relevante. -
Impacto de ter ou não: Por fim, ter
%matplotlib inline
no notebook que não precisa é inofensivo. A pior coisa é que seja redundante. Normalmente, não causa lentidão nem erro. (Um ponto pouco importante: pode conflitar com certas configurações do Matplotlib se você definir algo na mesma célula após o comando mágico — uma questão avançada (python - Is %matplotlib inline still needed? - Stack Overflow (opens in a new tab)). Mas, em geral, é tranquilo de colocar).
Diante desses pontos, a resposta à pergunta "ainda precisamos dele?" é: para a maioria dos usos modernos, você não precisa obrigatoriamente do %matplotlib inline
para visualizar seus gráficos, mas é comum incluí-lo por clareza e compatibilidade geral (Exploring Matplotlib Inline: A Quick Tutorial | DataCamp (opens in a new tab)). Muitos recursos de aprendizado atuais sequer mencionam, porque o Jupyter já configura o inline automaticamente. Ainda assim, ao encontrá-lo em notebooks antigos ou de terceiros, você agora sabe que ele serve para garantir que seus gráficos fiquem visíveis no notebook. E, se você estiver criando seu próprio notebook, pode inclua-lo como uma medida de segurança – ou simplesmente ignorar se seu ambiente já cuida disso.
Conclusão
Resumindo, %matplotlib inline
é um comando "mágico" que faz seus gráficos do Matplotlib aparecerem logo abaixo do código em um Notebook Jupyter – sem passos adicionais. Era uma linha padrão nos primeiros workflows do Jupyter para obter gráficos inline. Hoje, muitos notebooks já fazem isso automaticamente, mas o comando ainda é amplamente usado e visto como uma prática segura.
Para iniciantes, os pontos principais são:
%matplotlib inline
serve apenas em ambientes interativos como Jupyter. Não é usado em scripts Python convencionais.- Ele garante que seus comandos de plotagem
plt.plot()
exibam gráficos no notebook, ao invés de abrir uma janela separada ou não mostrar nada (Jupyter Notebook Matplotlib Inline: A Beginner's Guide | Saturn Cloud Blog (opens in a new tab)). - Colocá-lo no início do notebook é uma boa prática, pois garante que todas as funções de plotagem futuras mostrarão gráficos inline.
- Nos ambientes atuais, geralmente não é mais obrigatório usá-lo, pois o Jupyter já configura o backend inline por padrão (Exploring Matplotlib Inline: A Quick Tutorial | DataCamp (opens in a new tab)). Mas incluí-lo não faz mal e ajuda na compatibilidade e clareza.
Então, na próxima vez que você vir %matplotlib inline
no início de um notebook, saiba que é uma mágica para garantir seus gráficos logo abaixo do código, tornando tudo mais visual e integrado. Você pode usá-lo com tranquilidade, ou simplesmente ignorá-lo se souber que seu ambiente já cuida disso. Feliz plotagem, e aproveite a conveniência de ver seus gráficos no mesmo lugar do seu código!
Fontes:
- Saturn Cloud – Jupyter Notebook Matplotlib Inline: A Beginner's Guide (Jupyter Notebook Matplotlib Inline: A Beginner's Guide | Saturn Cloud Blog (opens in a new tab))
- DataCamp – Exploring Matplotlib Inline: A Quick Tutorial (Exploring Matplotlib Inline: A Quick Tutorial | DataCamp (opens in a new tab))
- Medium – All About %matplotlib inline: Why Should You Stop Using This Today? (What does %matplotlib inline do? | Medium (opens in a new tab))
- Stack Overflow – Diversas perguntas e respostas sobre o uso e necessidade do
%matplotlib inline
- Documentação do IPython – Sobre os comandos mágicos