Comment puis-je ouvrir la fenêtre interactive Matplotlib dans IPython notebook?
J'utilise IPython avec --pylab = inline et j'aimerais parfois passer rapidement à L'interface graphique Matplotlib interactive et zoomable pour afficher les tracés (celui qui apparaît lorsque vous tracez quelque chose dans une console Python terminal). Comment pourrais-je le faire? De préférence sans quitter ou redémarrer mon ordinateur portable.
Le problème avec les tracés en ligne dans IPy notebook est qu'ils sont d'une résolution limitée et je ne peux pas zoomer dessus pour voir quelques parties plus petites. Avec L'interface graphique Maptlotlib qui commence à partir de un terminal je peux sélectionner un rectangle du graphique que je veux zoomer et les axes s'ajustent en conséquence. J'ai essayé d'expérimenter avec
from matplotlib import interactive
interactive(True)
Et
interactive(False)
Mais ça n'a rien fait. Je n'ai trouvé aucun indice en ligne non plus.
6 réponses
Selon la documentation , vous devriez pouvoir basculer d'avant en arrière comme ceci:
In [2]: %matplotlib inline
In [3]: plot(...)
In [4]: %matplotlib qt # wx, gtk, osx, tk, empty uses default
In [5]: plot(...)
Et cela fera apparaître une fenêtre de tracé régulière (un redémarrage sur le bloc-notes peut être nécessaire).
J'espère que cela aide.
Si tout ce que vous voulez faire est de passer des tracés en ligne à interactive et retour (de sorte que vous pouvez faire un panoramique/zoom), il est préférable d'utiliser %matplotlib magic.
#interactive plotting in separate window
%matplotlib qt
Et retour à html
#normal charts inside notebooks
%matplotlib inline
%pylab magic importe un tas d'autres choses et peut même entraîner un conflit. Il fait " from pylab import *".
Vous pouvez également utiliser le nouveau backend notebook (ajouté dans matplotlib 1.4):
#interactive charts inside notebooks, matplotlib 1.4+
%matplotlib notebook
Si vous voulez avoir plus d'interactivité dans vos diagrammes, vous pouvez regarder mpld3 et bokeh. mpld3 est génial, si vous n'avez pas de tonnes de points de données (par exemple
Vous pouvez également consulter pivottablejs (pip install pivottablejs)
from pivottablejs import pivot_ui
pivot_ui(df)
Quelle que soit l'exploration de données interactive cool, elle peut totalement jouer avec la reproductibilité. Il m'est arrivé, j'ai donc essayez de l'utiliser seulement au stade très précoce et passez à matplotlib/seaborn en ligne pure, une fois que j'ai eu la sensation pour les données.
À partir de matplotlib 1.4.0, il existe maintenant un backend interactif à utiliser dans le notebook
%matplotlib notebook
Il y a quelques versions D'IPython qui n'ont pas cet alias enregistré, le repli est:
%matplotlib nbagg
Si cela ne fonctionne pas, mettez à jour IPython.
Pour jouer avec cette, goto tmpnb.org
Et coller
%matplotlib notebook
import pandas as pd
import numpy as np
import matplotlib
from matplotlib import pyplot as plt
import seaborn as sns
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts = ts.cumsum()
df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index,
columns=['A', 'B', 'C', 'D'])
df = df.cumsum()
df.plot(); plt.legend(loc='best')
Dans une cellule de code (ou simplement modifier le bloc-notes de démonstration Python existant)
Une meilleure solution pour votre problème pourrait être la bibliothèque Charts. Il vous permet d'utiliser l'excellente bibliothèque javascript Highcharts pour créer de belles parcelles interactives. Highcharts utilise la balise HTML svg
de sorte que tous vos graphiques sont en fait des images vectorielles.
Certaines caractéristiques:
- tracés vectoriels que vous pouvez télécharger .png, .jpg et .formats svg de sorte que vous ne rencontrerez jamais de problèmes de résolution
- graphiques interactifs (zoom, glisser, survoler point, ...)
- utilisable dans un bloc-notes IPython
- Explorez des centaines de structures de données en même temps en utilisant les capacités de traçage asynchrone.
Avertissement: je suis le développeur de la bibliothèque
J'utilise ipython dans "jupyter QTConsole" d'Anaconda à www.continuum.io/downloads sur 5/28/20117.
Voici un exemple pour basculer entre une fenêtre séparée et un mode de tracé en ligne en utilisant IPython magic.
>>> import matplotlib.pyplot as plt
# data to plot
>>> x1 = [x for x in range(20)]
# Show in separate window
>>> %matplotlib
>>> plt.plot(x1)
>>> plt.close()
# Show in console window
>>> %matplotlib inline
>>> plt.plot(x1)
>>> plt.close()
# Show in separate window
>>> %matplotlib
>>> plt.plot(x1)
>>> plt.close()
# Show in console window
>>> %matplotlib inline
>>> plt.plot(x1)
>>> plt.close()
# Note: the %matplotlib magic above causes:
# plt.plot(...)
# to implicitly include a:
# plt.show()
# after the command.
#
# (Not sure how to turn off this behavior
# so that it matches behavior without using %matplotlib magic...)
# but its ok for interactive work...
Redémarrez le noyau et effacez la sortie (si vous ne démarrez pas avec un nouveau bloc-notes), puis exécutez
%matplotlib tk
Pour plus d'informations, allez à tracer avec matplotlib