Objetivo de "% matplotlib inline"


483

Alguém poderia me explicar de que exatamente é o uso %matplotlib inline?


22
É uma função mágica que renderiza a figura em um caderno (em vez de exibir um despejo do objeto da figura). Um tutorial simples do Matplotlib é encontrado aqui data-blogger.com/2017/11/15/… .
Www.data-blogger.com 15/11

6
Você pode verificar as infra-estruturas disponíveis (como inline), digitando: %matplotlib --list.
Luis

Respostas:


286

%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 .


4
% matplotlib inline ^ SyntaxError: sintaxe inválida

4
@Jadda Você está usando IPython? Caso contrário, você receberá um erro de sintaxe, pois não é CPython válido (o intérprete 'padrão' para Python). De qualquer forma, não adianta usá-lo, a menos que você esteja usando um Notebook IPython, pois o objetivo é renderizar plotagens alinhadas com um notebook.
precisa

Sim. Eu estou usando isso em Spyder IDE (Parte Anaconda) para implementar Tensorflow detecção de objetos API

3
Nesse caso, @Jadda, parece que você tem uma nova pergunta a fazer. Você deve incluir todos os detalhes relevantes lá para poder obter mais atenção para sua pergunta do que nos comentários desta resposta. Boa sorte.
precisa

2
ok, mas qual é a alternativa: como posso ver as parcelas se não houver essa mágica ativada?
JaakL

77

Desde que você esteja executando o IPython, o %matplotlib inlineresultado da plotagem será exibido e armazenado no notebook.

De acordo com a documentação

Para configurar isso, antes de matplotlibexecutar 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 dadas matplotlib; 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 inlineback - 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.


32

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 matplotlibinterativamente no Jupyter.

%matplotlib: qualquer pltcomando 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


7

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.

documentos do ipython


Eu acho que isso é diferente de mudar o back-end. A menos que o back-end seja inline, os gráficos são gerados nas janelas externas e você precisa usar display () para mostrá-los no notebook.
Vincenzooo

5

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.


4

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.


3

Para explicar claramente:

Se você não gosta assim:

insira a descrição da imagem aqui

adicionar %matplotlib inline

insira a descrição da imagem aqui

e aí está você no seu notebook jupyter.


2

TL; DR

%matplotlib inline - Exibe saída em linha


O 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 dadas matplotlib; ele não executa nenhum comando de importação Python, ou seja, nenhum nome é adicionado ao espaço para nome.

Exibir saída em janela separada

%matplotlib

Exibir saída em linha

(disponível apenas para o Jupyter Notebook e o Jupyter QtConsole)

%matplotlib inline

Display com back-ends interativos

(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.0e matplotlib 2.0você pode evitar o uso da mágica específica do IPython e o uso matplotlib.pyplot.ion()/ matplotlib.pyplot.ioff() que tem as vantagens de trabalhar fora do IPython também.

Consulte: Saída rica em IPython - plotagem interativa


Pergunta noob real aqui, desculpe .... o que é "kernel do IPython" e o que é um "comando mágico". O Python de repente se dividiu em mim e ficou não-pitônico? Eu nunca ouvi falar desses conceitos.
lb_so

Para um notebook python (ipynb) - um ipython kernal ou jupyter kernal é a versão do python (e dependências) a ser usada pelo projeto. Você pode iniciar um bloco de anotações jupyter e alterar os kernals para executar as células com uma configuração diferente do python, configurar variáveis ​​de ambiente e muito mais.
Ani Menon

O comando @Ib_so Magic é um recurso ipython / jupyter. Leia mais aqui.
Ani Menon

0

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.


-8

Não é obrigatório escrever isso. Funcionou bem para mim sem a %matplotlibfunção mágica ( ). Estou usando o compilador Sypder, um que vem com o Anaconda.


13
Spyder é um IDE, não um compilador.
Matthieu Brucher 13/10/1918

3
Embora sua resposta não tenha respondido à pergunta do OP, ela respondeu à minha. Obrigado.
EngrStudent
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.