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.

92
demandé sur metakermit 2013-01-10 19:55:48

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.

91
répondu Adrian Martin 2015-11-25 20:07:22

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.

45
répondu volodymyr 2015-11-04 15:07:19

À 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)

19
répondu tacaswell 2015-10-10 15:31:57

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

3
répondu arnoutaertgeerts 2015-05-22 13:00:38

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...
3
répondu Bill Moore 2017-05-28 15:43:43

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

2
répondu Marcin Lentner 2017-05-19 18:18:29