web-dev-qa-db-fra.com

matplotlib python inline on / off

Si je démarre un bloc-notes ipython avec matplotlib inline, existe-t-il un moyen de tracer ultérieurement une figure de sorte qu'elle s'affiche de manière "standard", sans ligne, sans devoir recharger le bloc-notes sans la commande inline? J'aimerais pouvoir insérer des chiffres dans le cahier, mais d'autres en mode interactif traditionnel, où je peux effectuer un zoom et un panoramique.

48
user2379888

Vous pouvez changer le backend de matplotlib de %matplotlib <backend>. Pour revenir au système par défaut de votre système, utilisez %matplotlib auto ou tout simplement %matplotlib.

Il existe de nombreux backends disponibles tels que gtk, qt, notebook, etc. Personnellement, je recommande vivement le notebook (aka nbagg) backend. Il est similaire à inline mais il est interactif et permet d’agrandir ou de zoomer depuis Jupyter.

Pour plus d'informations, essayez: ?%matplotlib dans un IPython/Jupyter ou documentation en ligne d'IPython

38
Gustavo Bezerra

plt.ioff() et plt.ion() fonctionne comme un charme dans mon cahier Jupyter avec le notebook en tant que backend (en supposant que import matplotlib.pyplot as plt).

7
mattmilten

Cela dépend de la configuration exacte de votre matplotlib, mais vous pouvez basculer entre inline et l'un de 'osx', 'qt4', 'qt5', 'gtk3', 'wx', 'qt', 'gtk', 'tk' (certains sont des alias d'autres). utilisez simplement %matplotlib <the one you want> commuter. Selon les conditions, vous n’avez accès qu’à l’un d’eux.

6
Matt

Une autre possibilité consiste à utiliser matplotlib.pyplot.close(fig). Cela fonctionne pour moi même si %matplotlib auto soulève une horrible erreur wx (liée aux versions des fichiers de développement GTK que j’ai installés dans LD_LIBRARY_PATH).

Bien que cela puisse poser des problèmes si vous réalisez quelque chose comme une vidéo (ou non; je n'ai pas essayé), cela a fonctionné pour moi lors de l'assemblage d'images dans un tableau à l'aide de IPython.display.HTML par cette réponse .

5
tsbertalan