Alguém poderia me explicar de que exatamente é o uso %matplotlib inline
?
Alguém poderia me explicar de que exatamente é o uso %matplotlib inline
?
Respostas:
%matplotlib
é uma função mágica no IPython. Vou citar a documentação relevante aqui para você ler por conveniência:
O IPython possui um conjunto de 'funções mágicas' predefinidas que você pode chamar com uma sintaxe no estilo de linha de comando. Existem dois tipos de mágica: orientada a linhas e orientada a células. As magias de linha são prefixadas com o caractere% e funcionam como as chamadas de linha de comando do SO: elas obtêm como argumento o resto da linha, onde os argumentos são passados sem parênteses ou aspas. A mágica de linhas pode retornar resultados e pode ser usada no lado direito de uma tarefa. As magias de célula são prefixadas com um %%% duplo, e são funções que obtêm como argumento não apenas o restante da linha, mas também as linhas abaixo dele em um argumento separado.
%matplotlib inline
define o back-end do matplotlib para o back - end 'inline' :
Com esse back-end, a saída dos comandos de plotagem é exibida em linha dentro dos front-end, como o bloco de anotações Jupyter, diretamente abaixo da célula de código que o produziu. As plotagens resultantes também serão armazenadas no documento do caderno.
Ao usar o back-end 'inline', seus gráficos matplotlib serão incluídos no seu notebook, ao lado do código. Também vale a pena ler Como colocar o gráfico matplotlib do notebook IPython embutido para referência sobre como usá-lo no seu código.
Se você quiser interatividade também, poderá usar o nbagg back - end com %matplotlib notebook
(no IPython 3.x), conforme descrito aqui .
Desde que você esteja executando o IPython, o %matplotlib inline
resultado da plotagem será exibido e armazenado no notebook.
De acordo com a documentação
Para configurar isso, antes de
matplotlib
executar qualquer plotagem ou importação, você deve executar o%matplotlib magic command
. Isso executa a configuração necessária nos bastidores para que o IPython funcione corretamente de mãos dadasmatplotlib
; no entanto, na verdade, ele não executa nenhum comando de importação do Python, ou seja, nenhum nome é adicionado ao espaço para nome.Um back-end particularmente interessante, fornecido pelo IPython, é o
inline
back - end. Está disponível apenas para o Jupyter Notebook e o Jupyter QtConsole. Pode ser chamado da seguinte maneira:%matplotlib inline
Com esse back-end, a saída dos comandos de plotagem é exibida em linha dentro dos front-end, como o bloco de anotações Jupyter, diretamente abaixo da célula de código que o produziu. As plotagens resultantes também serão armazenadas no documento do caderno.
Se você deseja adicionar gráficos ao seu notebook Jupyter, então %matplotlib inline
é uma solução padrão. E existem outros comandos mágicos que serão usados matplotlib
interativamente no Jupyter.
%matplotlib
: qualquer plt
comando plot agora fará com que uma janela de figura seja aberta, e outros comandos podem ser executados para atualizar o plot. Algumas alterações não serão desenhadas automaticamente. Para forçar uma atualização, useplt.draw()
%matplotlib notebook
: levará a gráficos interativos incorporados ao notebook, você pode ampliar e redimensionar a figura
%matplotlib inline
: desenhe apenas imagens estáticas no notebook
A partir do IPython 5.0 e matplotlib 2.0, você pode evitar o uso da mágica específica do IPython e o uso
matplotlib.pyplot.ion()/matplotlib.pyplot.ioff()
com as vantagens de trabalhar fora do IPython.
inline
, os gráficos são gerados nas janelas externas e você precisa usar display () para mostrá-los no notebook.
Significa apenas que qualquer gráfico que estamos criando como parte do nosso código aparecerá no mesmo caderno e não em uma janela separada, o que aconteceria se não usássemos essa declaração mágica.
Se você não sabe o que é o back-end, pode ler isto: https://matplotlib.org/tutorials/introductory/usage.html#backends
Algumas pessoas usam o matplotlib interativamente a partir do shell python e exibem janelas de plotagem quando digitam comandos. Algumas pessoas executam os cadernos Jupyter e desenham plotagens embutidas para análise rápida dos dados. Outros incorporam o matplotlib nas interfaces gráficas do usuário, como wxpython ou pygtk, para criar aplicativos avançados. Algumas pessoas usam matplotlib em scripts em lote para gerar imagens pós-escritas a partir de simulações numéricas, e outras ainda rodam servidores de aplicativos da web para exibir dinamicamente gráficos. Para suportar todos esses casos de uso, o matplotlib pode direcionar diferentes saídas, e cada um desses recursos é chamado de back-end; o "front-end" é o código do usuário, ou seja, o código de plotagem, enquanto o "back-end" faz todo o trabalho duro nos bastidores para fazer a figura.
Portanto, quando você digita% matplotlib inline, ele ativa o back-end inline. Conforme discutido nas postagens anteriores:
Com esse back-end, a saída dos comandos de plotagem é exibida em linha dentro dos front-end, como o bloco de anotações Jupyter, diretamente abaixo da célula de código que o produziu. As plotagens resultantes também serão armazenadas no documento do caderno.
TL; DR
%matplotlib inline
- Exibe saída em linhaO kernel do IPython tem a capacidade de exibir gráficos executando o código. O kernel do IPython foi projetado para funcionar perfeitamente com a biblioteca de plotagem matplotlib para fornecer essa funcionalidade.
%matplotlib
é um comando mágico que executa a configuração necessária nos bastidores para que o IPython funcione corretamente de mãos dadasmatplotlib
; ele não executa nenhum comando de importação Python, ou seja, nenhum nome é adicionado ao espaço para nome.
%matplotlib
(disponível apenas para o Jupyter Notebook e o Jupyter QtConsole)
%matplotlib inline
(valores válidos 'GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template'
)
%matplotlib gtk
Exemplo - GTK3Agg - Uma renderização Agg para uma tela GTK 3.x (requer PyGObject e pycairo ou cairocffi).
Mais detalhes sobre os back-end interativos do matplotlib: aqui
Começando com
IPython 5.0
ematplotlib 2.0
você pode evitar o uso da mágica específica do IPython e o usomatplotlib.pyplot.ion()
/matplotlib.pyplot.ioff()
que tem as vantagens de trabalhar fora do IPython também.
Desde que você esteja executando o Jupyter Notebook, o comando% matplotlib inline fará com que as saídas de plotagem apareçam no notebook e também possa ser armazenado.
Não é obrigatório escrever isso. Funcionou bem para mim sem a %matplotlib
função mágica ( ). Estou usando o compilador Sypder, um que vem com o Anaconda.