Qualcuno potrebbe spiegarmi a cosa serve esattamente %matplotlib inline
?
Qualcuno potrebbe spiegarmi a cosa serve esattamente %matplotlib inline
?
Risposte:
%matplotlib
è una funzione magica in IPython. Citerò qui la documentazione pertinente da leggere per comodità:
IPython ha una serie di "funzioni magiche" predefinite che è possibile chiamare con una sintassi in stile riga di comando. Esistono due tipi di magie, orientate alla linea e orientate alla cellula. Le magie di linea sono precedute dal carattere% e funzionano in modo molto simile alle chiamate da riga di comando del sistema operativo: ottengono come argomento il resto della linea, dove gli argomenti vengono passati senza parentesi o virgolette. Le linee magiche possono restituire risultati e possono essere utilizzate nella parte destra di un compito. Le magie cellulari sono precedute da un doppio %% e sono funzioni che ottengono come argomento non solo il resto della linea, ma anche le linee sottostanti in un argomento separato.
%matplotlib inline
imposta il backend di matplotlib sul backend 'inline' :
Con questo backend, l'output dei comandi di stampa viene visualizzato in linea all'interno di frontend come il notebook Jupyter, direttamente sotto la cella di codice che lo ha prodotto. I grafici risultanti verranno quindi memorizzati anche nel documento del notebook.
Quando si utilizza il backend "inline", i grafici matplotlib verranno inclusi nel notebook, accanto al codice. Potrebbe valere la pena leggere anche Come rendere in linea il diagramma matplotlib per notebook IPython come riferimento su come usarlo nel codice.
Se si desidera anche l'interattività, è possibile utilizzare il back-end nbagg con %matplotlib notebook
(in IPython 3.x), come descritto qui .
A condizione che si stia eseguendo IPython, i %matplotlib inline
risultati della trama verranno visualizzati e memorizzati nel notebook.
Secondo la documentazione
Per configurarlo, prima di
matplotlib
eseguire qualsiasi tracciamento o importazione di è necessario eseguire il%matplotlib magic command
. Ciò esegue la configurazione dietro le quinte necessaria affinché IPython funzioni correttamente mano nella manomatplotlib
; tuttavia, non esegue effettivamente alcun comando di importazione Python, ovvero non viene aggiunto alcun nome allo spazio dei nomi.Un backend particolarmente interessante, fornito da IPython, è il
inline
backend. Questo è disponibile solo per Jupyter Notebook e Jupyter QtConsole. Può essere invocato come segue:%matplotlib inline
Con questo backend, l'output dei comandi di stampa viene visualizzato in linea all'interno di frontend come il notebook Jupyter, direttamente sotto la cella di codice che lo ha prodotto. I grafici risultanti verranno quindi memorizzati anche nel documento del notebook.
Se vuoi aggiungere grafici al tuo notebook Jupyter, allora %matplotlib inline
è una soluzione standard. E ci sono altri comandi magici che verranno utilizzati in modo matplotlib
interattivo all'interno di Jupyter.
%matplotlib
: qualsiasi plt
comando di trama ora aprirà una finestra di figura e ulteriori comandi potranno essere eseguiti per aggiornare il diagramma. Alcune modifiche non verranno disegnate automaticamente, per forzare un aggiornamento, utilizzareplt.draw()
%matplotlib notebook
: porterà a grafici interattivi incorporati nel notebook, è possibile ingrandire e ridimensionare la figura
%matplotlib inline
: disegna solo immagini statiche nel notebook
A partire da IPython 5.0 e matplotlib 2.0 è possibile evitare l'uso della magia e dell'uso specifici di IPython
matplotlib.pyplot.ion()/matplotlib.pyplot.ioff()
che presentano i vantaggi di lavorare anche al di fuori di IPython.
inline
, i grafici vengono generati nelle finestre esterne ed è necessario utilizzare display () per mostrarli nel notebook.
Significa solo che qualsiasi grafico che stiamo creando come parte del nostro codice apparirà nello stesso taccuino e non in una finestra separata, cosa che accadrebbe se non avessimo usato questa dichiarazione magica.
Se non sai cos'è il backend, puoi leggere questo: https://matplotlib.org/tutorials/introductory/usage.html#backends
Alcune persone usano matplotlib in modo interattivo dalla shell python e fanno apparire finestre di tracciamento quando digitano i comandi. Alcune persone eseguono notebook Jupyter e disegnano grafici in linea per una rapida analisi dei dati. Altri incorporano matplotlib in interfacce utente grafiche come wxpython o pygtk per creare applicazioni ricche. Alcune persone usano matplotlib negli script batch per generare immagini PostScript da simulazioni numeriche, mentre altri ancora eseguono server di applicazioni Web per servire in modo dinamico grafici. Per supportare tutti questi casi d'uso, matplotlib può indirizzare output diversi e ciascuna di queste funzionalità è chiamata backend; il "frontend" è il codice utente, cioè il codice di stampa, mentre il "backend" fa tutto il duro lavoro dietro le quinte per fare la figura.
Pertanto, quando si digita% matplotlib inline, si attiva il back-end inline. Come discusso nei post precedenti:
Con questo backend, l'output dei comandi di stampa viene visualizzato in linea all'interno di frontend come il notebook Jupyter, direttamente sotto la cella di codice che lo ha prodotto. I grafici risultanti verranno quindi memorizzati anche nel documento del notebook.
TL; DR
%matplotlib inline
- Visualizza l'output in lineaIl kernel IPython ha la capacità di visualizzare grafici eseguendo il codice. Il kernel IPython è progettato per funzionare perfettamente con la libreria di stampa matplotlib per fornire questa funzionalità.
%matplotlib
è un comando magico che esegue la configurazione dietro le quinte necessaria affinché IPython funzioni correttamente mano nella manomatplotlib
; non esegue alcun comando di importazione Python, ovvero non viene aggiunto alcun nome allo spazio dei nomi.
%matplotlib
(disponibile solo per Jupyter Notebook e Jupyter QtConsole)
%matplotlib inline
(valori validi 'GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template'
)
%matplotlib gtk
Esempio: GTK3Agg: rendering Agg su una tela GTK 3.x (richiede PyGObject e pycairo o cairocffi).
Maggiori dettagli sui backend interattivi matplotlib: qui
A partire da
IPython 5.0
ematplotlib 2.0
puoi evitare l'uso della magia specifica di IPython e l'usomatplotlib.pyplot.ion()
/matplotlib.pyplot.ioff()
che hanno i vantaggi di lavorare anche al di fuori di IPython.
Consultare: Output ricco di IPython - Plot interattivo
A condizione che tu stia eseguendo Jupyter Notebook, il comando inline% matplotlib farà apparire gli output della trama nel notebook, inoltre può essere memorizzato.
Non è obbligatorio scriverlo. Ha funzionato bene per me senza ( %matplotlib
) funzione magica. Sto usando il compilatore Sypder, uno che viene fornito in Anaconda.