Comment faire pour ordinateur portable IPython matplotlib intrigue en ligne


J'essaie d'utiliser IPython portable sur MacOS X avec Python 2.7.2 et IPython 1.1.0.

Je ne peux pas obtenir les graphiques matplotlib pour apparaître en ligne.

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  

J'ai aussi essayé %pylab inline et les arguments de la ligne de commande ipython --pylab=inline mais cela ne fait aucune différence.

x = np.linspace(0, 3*np.pi, 500)
plt.plot(x, np.sin(x**2))
plt.title('A simple chirp')
plt.show()

Au lieu de graphiques en ligne, je reçois ceci:

<matplotlib.figure.Figure at 0x110b9c450>

Et matplotlib.get_backend() montre que j'ai le backend 'module://IPython.kernel.zmq.pylab.backend_inline' .



Answers


J'ai utilisé %matplotlib inline dans la première cellule du portable et ça marche. Je pense que vous devriez essayer:

%matplotlib inline

import matplotlib
import numpy as np
import matplotlib.pyplot as plt

Vous pouvez également toujours démarrer tous vos noyaux IPython en mode inline par défaut en définissant les options de configuration suivantes dans vos fichiers de configuration:

c.IPKernelApp.matplotlib=<CaselessStrEnum>
  Default: None
  Choices: ['auto', 'gtk', 'gtk3', 'inline', 'nbagg', 'notebook', 'osx', 'qt', 'qt4', 'qt5', 'tk', 'wx']
  Configure matplotlib for interactive use with the default matplotlib backend.



Si votre version matplotlib est supérieure à 1,4, il est également possible d'utiliser

IPython 3.x et supérieur

%matplotlib notebook

import matplotlib.pyplot as plt

Versions plus anciennes

%matplotlib nbagg

import matplotlib.pyplot as plt

Les deux vont activer le backend nbagg , ce qui permet l'interactivité.







Je ne sais pas pourquoi joaquin posté sa réponse comme un commentaire, mais c'est la bonne réponse:

démarrer ipython avec ipython notebook --pylab inline

Edit: Ok, ceci est maintenant obsolète selon le commentaire ci-dessous. Utilisez la magie% pylab.




Pour rendre matplotlib inline par défaut dans Jupyter (IPython 3):

  1. Modifier le fichier ~/.ipython/profile_default/ipython_config.py

  2. Ajouter une ligne c.InteractiveShellApp.matplotlib = 'inline'

Notez que l'ajout de cette ligne à ipython_notebook_config.py ne fonctionnerait pas. Sinon, cela fonctionne bien avec Jupyter et IPython 3.1.0







J'ai trouvé une solution de contournement qui est assez satisfaisante. J'ai installé Anaconda Python et cela fonctionne maintenant hors de la boîte pour moi.




J'ai fait l'installation d'anaconda mais matplotlib ne trace pas

Il commence à comploter quand je l'ai fait

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  



Sur Ubuntu, vous pouvez supprimer %matplotlib inline tant que vous avez plt.show() après la création du graphe.




Vous pouvez simuler ce problème avec une erreur de syntaxe, cependant, %matplotlib inline ne résoudra pas le problème.

D'abord un exemple de la bonne façon de créer un complot. Tout fonctionne comme prévu avec les importations et la magie fournies par eNord9 .

df_randNumbers1 = pd.DataFrame(np.random.randint(0,100,size=(100, 6)), columns=list('ABCDEF'))

df_randNumbers1.ix[:,["A","B"]].plot.kde()

Cependant, en laissant le signe () à la fin du type de tracé, vous obtenez une non-erreur quelque peu ambiguë.

Code erronious:

df_randNumbers1.ix[:,["A","B"]].plot.kde

Exemple d'erreur:

<bound method FramePlotMethods.kde of <pandas.tools.plotting.FramePlotMethods object at 0x000001DDAF029588>>

Autre que ce message d'une ligne, il n'y a aucune trace de pile ou autre raison évidente pour penser que vous avez fait une erreur de syntaxe. L'intrigue ne s'imprime pas.