dans Ipython notebook / Jupyter, Pandas n'affiche pas le graphique que j'essaie de tracer

104

J'essaie de tracer des données à l'aide de pandas dans Ipython Notebook, et bien qu'il me donne l'objet, il ne trace pas réellement le graphique lui-même. Donc ça ressemble à ça:

In [7]:

pledge.Amount.plot()

Out[7]:

<matplotlib.axes.AxesSubplot at 0x9397c6c>

Le graphique devrait suivre après cela, mais il n'apparaît tout simplement pas. J'ai importé matplotlib, donc ce n'est pas le problème. Dois-je importer un autre module?

chrisfs
la source
J'ai pu tracer des choses il y a quelques jours, en suivant une vidéo, mais maintenant je n'arrive pas à tracer quoi que ce soit. et je semble faire la même chose que la documentation. pandas.pydata.org/pandas-docs/stable/visualization.html Je pense donc que quelque chose ne va pas avec mon système ou qu'un module n'est pas importé
chrisfs
@chrisfs il y a une nouvelle réponse correcte. Celui que vous avez sélectionné il y a quelques années est désormais incorrect. Envisagez-vous de changer votre réponse acceptée? Merci.
tumultous_rooster

Réponses:

177

Notez que --pylab est obsolète et a été supprimé des nouvelles versions d'IPython. La méthode recommandée pour activer le traçage en ligne dans le bloc-notes IPython est maintenant d'exécuter:

%matplotlib inline
import matplotlib.pyplot as plt

Voir cet article de la liste de diffusion ipython-dev pour plus de détails.

Tal Yarkoni
la source
2
Très bien. Après avoir utilisé %matplotlib inlinemes tentatives pour tracer, j'ai obtenu une image visible en ligne, bien. En fait, l'import n'est pas nécessaire si le tracé est une méthode d'objet déjà existant comme dans OP.
Jan Vlcinsky
2
C'est la nouvelle bonne réponse. Plus d'informations dans ce billet de blog .
Scott Lowrey
@Tal Yarkoni J'ai ajouté la première ligne de votre réponse pour que cela fonctionne. merci ~~!
verystrongjoe
S'applique également aux pandas dans le notebook Jupyter.
datalifenyc
Par souci d'exhaustivité, il %matplotlib nbaggest utile de nos jours pour obtenir une version plus interactive.
Frederick Nord
50

Edit: Pylab est obsolète, veuillez consulter la réponse acceptée actuelle

Ok, il semble que la réponse soit de démarrer le notebook ipython avec --pylab = inline. donc ipython notebook --pylab = inline Cela lui permet de faire ce que j'ai vu plus tôt et ce que je voulais qu'il fasse. Désolé pour la question initiale vague.

chrisfs
la source
26
Oui, c'est ce dont vous avez besoin. Vous pouvez également exécuter %pylab inlinedans un bloc-notes pour activer le mode Pylab.
Thomas K
3
notez qu'il n'est pas nécessaire qu'il soit en mode en ligne pour que les pandas fonctionnent. J'utilise volontiers juste ipython notebook --pylabavec des pandas pour avoir l'intrigue dans une fenêtre supplémentaire, si c'est ce que quelqu'un veut.
K.-Michael Aye
26

Avec votre import matplotlib.pyplot as pltjuste ajouter

plt.show()

et il affichera toutes les parcelles stockées.

eumiro
la source
1
ok ça aide. Je pensais qu'Ipython ferait automatiquement des tracés en ligne. La documentation pour les pandas ne montre pas non plus d'avoir à faire plt.show () pandas.pydata.org/pandas-docs/stable/visualization.html
chrisfs
4

simple après avoir importé le matplotlib, vous avez exécuté une magie si vous avez démarré l'ipython comme ceci

ipython notebook 

%matplotlib inline 

exécuter cette commande tout sera montré parfaitement

Ankanna
la source
1

démarrez ipython avec ipython notebook --pylab inline, puis le graphique montrera en ligne.

porcelet
la source
Oui, c'était la première réponse à cette question, mais elle semble également être obsolète maintenant.
chrisfs
-2
import matplotlib as plt
%matplotlib as inline
TrilochanYadav
la source
-5

Tout ce que vous avez à faire est d' importer matplotlib.

import matplotlib.pyplot as plt 
l'esprit curieux
la source
I have imported matplotlib
WoodChopper
hmmm c'est bizarre. Qu'est ce que tu utilises? J'utilise iPython Notebook. mon code ci-dessous. data.plot (kind = 'barh', stacked = True)
l'esprit curieux
Cette réponse est une répétition de la réponse acceptée ci-dessus.
chrisfs