Quelqu'un pourrait-il m'expliquer à quoi sert exactement %matplotlib inline
?
Quelqu'un pourrait-il m'expliquer à quoi sert exactement %matplotlib inline
?
Réponses:
%matplotlib
est une fonction magique dans IPython. Je citerai la documentation pertinente ici pour que vous puissiez la lire pour plus de commodité:
IPython possède un ensemble de «fonctions magiques» prédéfinies que vous pouvez appeler avec une syntaxe de style de ligne de commande. Il existe deux types de magie, orientée ligne et orientée cellule. Les magies de ligne sont préfixées du caractère% et fonctionnent un peu comme les appels de ligne de commande du système d'exploitation: elles obtiennent comme argument le reste de la ligne, où les arguments sont passés sans parenthèses ni guillemets. La magie des lignes peut renvoyer des résultats et peut être utilisée dans le côté droit d'une affectation. Les magies cellulaires sont préfixées avec un double %%, et ce sont des fonctions qui obtiennent comme argument non seulement le reste de la ligne, mais aussi les lignes en dessous dans un argument séparé.
%matplotlib inline
définit le backend de matplotlib sur le backend 'inline' :
Avec ce backend, la sortie des commandes de traçage est affichée en ligne dans les frontends comme le bloc-notes Jupyter, directement sous la cellule de code qui l'a produite. Les tracés résultants seront ensuite également stockés dans le document du carnet.
Lorsque vous utilisez le backend «en ligne», vos graphiques matplotlib seront inclus dans votre bloc-notes, à côté du code. Il peut être utile de lire également Comment faire en sorte que le plot matplotlib du bloc-notes IPython soit en ligne pour savoir comment l'utiliser dans votre code.
Si vous souhaitez également l'interactivité, vous pouvez utiliser le backend nbagg avec %matplotlib notebook
(dans IPython 3.x), comme décrit ici .
À condition que vous exécutiez IPython, le %matplotlib inline
fera apparaître vos sorties de tracé et sera stocké dans le bloc-notes.
Selon la documentation
Pour configurer cela, avant d'effectuer un traçage ou une importation de,
matplotlib
vous devez exécuter le%matplotlib magic command
. Cela effectue la configuration nécessaire en arrière-plan pour qu'IPython fonctionne correctement de pair avecmatplotlib
; cependant, il n'exécute aucune commande d'importation Python, c'est-à-dire qu'aucun nom n'est ajouté à l'espace de noms.Un backend particulièrement intéressant, fourni par IPython, est le
inline
backend. Cette option n'est disponible que pour le bloc-notes Jupyter et la console Jupyter QtConsole. Il peut être invoqué comme suit:%matplotlib inline
Avec ce backend, la sortie des commandes de traçage est affichée en ligne dans les frontends comme le bloc-notes Jupyter, directement sous la cellule de code qui l'a produite. Les tracés résultants seront ensuite également stockés dans le document du carnet.
Si vous souhaitez ajouter des tracés à votre bloc-notes Jupyter, %matplotlib inline
c'est une solution standard. Et il existe d'autres commandes magiques à utiliser de manière matplotlib
interactive dans Jupyter.
%matplotlib
: toute plt
commande de tracé entraînera maintenant l'ouverture d'une fenêtre de figure, et d'autres commandes peuvent être exécutées pour mettre à jour le tracé. Certaines modifications ne seront pas dessinées automatiquement, pour forcer une mise à jour, utilisezplt.draw()
%matplotlib notebook
: conduira à des tracés interactifs intégrés dans le cahier, vous pouvez zoomer et redimensionner la figure
%matplotlib inline
: dessinez uniquement des images statiques dans le bloc-notes
À partir d'IPython 5.0 et de matplotlib 2.0, vous pouvez éviter d'utiliser la magie spécifique d'IPython et une utilisation
matplotlib.pyplot.ion()/matplotlib.pyplot.ioff()
qui présente également les avantages de travailler en dehors d'IPython.
inline
, les tracés sont générés dans les fenêtres externes et vous devez utiliser display () pour les afficher dans le bloc-notes.
Cela signifie simplement que tout graphique que nous créons dans le cadre de notre code apparaîtra dans le même cahier et non dans une fenêtre distincte, ce qui se produirait si nous n'avions pas utilisé cette déclaration magique.
Si vous ne savez pas ce qu'est le backend, vous pouvez lire ceci: https://matplotlib.org/tutorials/introductory/usage.html#backends
Certaines personnes utilisent matplotlib de manière interactive à partir du shell python et font apparaître des fenêtres de traçage lorsqu'elles tapent des commandes. Certaines personnes exécutent des blocs-notes Jupyter et dessinent des graphiques en ligne pour une analyse rapide des données. D'autres intègrent matplotlib dans des interfaces utilisateur graphiques comme wxpython ou pygtk pour créer des applications riches. Certaines personnes utilisent matplotlib dans des scripts batch pour générer des images postscript à partir de simulations numériques, et d'autres encore exécutent des serveurs d'applications Web pour servir dynamiquement des graphiques. Pour prendre en charge tous ces cas d'utilisation, matplotlib peut cibler différentes sorties, et chacune de ces capacités est appelée backend; le "frontend" est le code utilisé par l'utilisateur, c'est-à-dire le code de traçage, tandis que le "backend" fait tout le travail difficile en arrière-plan pour créer la figure.
Ainsi, lorsque vous tapez% matplotlib inline, cela active le backend en ligne. Comme discuté dans les articles précédents:
Avec ce backend, la sortie des commandes de traçage est affichée en ligne dans les frontends comme le bloc-notes Jupyter, directement sous la cellule de code qui l'a produite. Les tracés résultants seront ensuite également stockés dans le document du carnet.
TL; DR
%matplotlib inline
- Affiche la sortie en ligneLe noyau IPython a la possibilité d'afficher des tracés en exécutant du code. Le noyau IPython est conçu pour fonctionner de manière transparente avec la bibliothèque de traçage matplotlib pour fournir cette fonctionnalité.
%matplotlib
est une commande magique qui effectue la configuration nécessaire en arrière-plan pour qu'IPython fonctionne correctement main dans la mainmatplotlib
; il n'exécute aucune commande d'importation Python, c'est-à-dire qu'aucun nom n'est ajouté à l'espace de noms.
%matplotlib
(disponible uniquement pour le bloc-notes Jupyter et la console Jupyter QtConsole)
%matplotlib inline
(valeurs valides 'GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template'
)
%matplotlib gtk
Exemple - GTK3Agg - Un rendu Agg sur un canevas GTK 3.x (nécessite PyGObject et pycairo ou cairocffi).
Plus de détails sur les backends interactifs matplotlib: ici
En commençant par
IPython 5.0
etmatplotlib 2.0
vous pouvez éviter l'utilisation de la magie spécifique d'IPython et utilisermatplotlib.pyplot.ion()
/matplotlib.pyplot.ioff()
qui présente également les avantages de travailler en dehors d'IPython.
Référez-vous: Sortie riche IPython - traçage interactif
À condition que vous exécutiez Jupyter Notebook, la commande% matplotlib inline fera apparaître vos sorties de tracé dans le notebook, elle peut également être stockée.
Il n'est pas obligatoire de l'écrire. Cela a bien fonctionné pour moi sans fonction ( %matplotlib
) magique. J'utilise le compilateur Sypder, celui qui est fourni avec Anaconda.