J'essaie d'utiliser le cahier IPython sur MacOS X avec Python 2.7.2 et IPython 1.1.0.
Je ne parviens pas à afficher les graphiques matplotlib en ligne.
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
J'ai également essayé %pylab inline
et les arguments de 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 des 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'
.
J'ai utilisé %matplotlib inline
dans la première cellule du cahier et cela fonctionne. Je pense que tu devrais 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 intégré 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 de 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 activeront le nbagg backend , qui permet l’interactivité.
Je ne suis pas sûr de savoir pourquoi joaquin a posté sa réponse sous forme de commentaire, mais c'est la bonne réponse:
démarrer ipython avec ipython notebook --pylab inline
Edit: Ok, ceci est maintenant obsolète comme dans le commentaire ci-dessous. Utilisez la commande magique %pylab inline
.
Pour rendre matplotlib inline par défaut dans Jupyter (IPython 3):
Editer le fichier ~/.ipython/profile_default/ipython_config.py
Ajouter la ligne c.InteractiveShellApp.matplotlib = 'inline'
Veuillez noter que l'ajout de cette ligne à ipython_notebook_config.py
ne fonctionnerait pas. Sinon, cela fonctionne bien avec Jupyter et IPython 3.1.0
Je suis d'accord avec foobarbecue (je n'ai pas assez de récs pour pouvoir simplement insérer un commentaire sous son post):
Il est maintenant recommandé que le cahier python ne soit pas lancé avec l'argument --pylab
, et selon Fernando Perez (créateur de ipythonnb) %matplotlib inline
devrait être la commande initiale du cahier.
J'ai trouvé une solution de contournement assez satisfaisante. J'ai installé Anaconda Python et cela fonctionne maintenant hors de la boîte pour moi.
J'ai fait installer l'anaconda mais matplotlib ne complote pas
Il commence à tracer quand j'ai fait ça
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 graphique.
Vous pouvez simuler ce problème avec une erreur de syntaxe. Toutefois, %matplotlib inline
ne résoudra pas le problème.
D'abord un exemple de la bonne façon de créer un tracé. Tout fonctionne comme prévu avec les importations et la magie que eNord9 fournie.
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 ()
à la fin du type de tracé, vous recevez 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>>
À part ce message d'une ligne, il n'y a aucune trace de pile ou autre raison évidente de penser que vous avez commis une erreur de syntaxe. L'intrigue ne s'imprime pas.
J'ai eu le même problème lorsque j'exécutais les commandes de traçage dans des cellules distinctes dans Jupyter:
In [1]: %matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
In [2]: x = np.array([1, 3, 4])
y = np.array([1, 5, 3])
In [3]: fig = plt.figure()
<Figure size 432x288 with 0 Axes> #this might be the problem
In [4]: ax = fig.add_subplot(1, 1, 1)
In [5]: ax.scatter(x, y)
Out[5]: <matplotlib.collections.PathCollection at 0x12341234> # CAN'T SEE ANY PLOT :(
In [6]: plt.show() # STILL CAN'T SEE IT :(
Le problème a été résolu en fusionnant les commandes de traçage dans une seule cellule:
In [1]: %matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
In [2]: x = np.array([1, 3, 4])
y = np.array([1, 5, 3])
In [3]: fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.scatter(x, y)
Out[3]: <matplotlib.collections.PathCollection at 0x12341234>
# AND HERE APPEARS THE PLOT AS DESIRED :)