Comment faire IPython ordinateur portable matplotlib parcelle en ligne

j'essaie d'utiliser IPython notebook sur MacOS X avec Python 2.7.2 et IPython 1.1.0.

Je ne peux pas obtenir des graphismes 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 en 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 graphismes en ligne, je reçois ceci:

<matplotlib.figure.Figure at 0x110b9c450>

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

621
demandé sur Michael Currie 2013-10-16 21:34:42

10 réponses

j'ai utilisé %matplotlib inline dans la première cellule du carnet et il fonctionne. 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.
877
répondu eNord9 2015-07-03 00:37:32

si votre version matplotlib est supérieure à 1.4, il est également possible d'utiliser

IPython 3.x et plus

%matplotlib notebook

import matplotlib.pyplot as plt

anciennes versions

%matplotlib nbagg

import matplotlib.pyplot as plt

les deux activeront le nbagg backend , ce qui permet l'interactivité.

Example plot with the nbagg backend

169
répondu Løiten 2016-04-22 07:27:29

Ctrl + Entrée

%matplotlib inline

Ligne Magique :D

voir: Tracking with Matplotlib .

70
répondu CodeFarmer 2017-09-19 10:43:36

Je ne sais pas pourquoi joaquin a publié sa réponse en commentaire, mais c'est la bonne réponse:

démarrer ipython avec ipython notebook --pylab inline

Edit: Ok, c'est maintenant obsolète comme par commentaire ci-dessous. Utilisez la magie %pylab.

20
répondu foobarbecue 2015-05-28 20:03:30

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

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

  2. ajouter la ligne c.InteractiveShellApp.matplotlib = 'inline'

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

10
répondu volodymyr 2015-09-03 16:03:07

je dois être d'accord avec foobarbecue (Je n'ai pas assez de recs pour pouvoir simplement insérer un commentaire sous son post):

il est maintenant recommandé que Python notebook n'est pas commencé avec l'argument --pylab , et selon Fernando Perez (créateur d'ipythonnb) %matplotlib inline devrait être la commande initiale notebook.

voir ici: http://nbviewer.ipython.org/github/ipython/ipython/blob/1.x/examples/notebooks/Part%203%20-%20Plotting%20with%20Matplotlib.ipynb

9
répondu thescoop 2016-01-25 21:54:29

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

6
répondu Ian Fiske 2013-10-17 00:28:47

sur Ubuntu vous pouvez supprimer %matplotlib inline aussi longtemps que vous avez plt.show() après la création du graphe.

4
répondu Conrad Thiele 2017-09-19 10:44:21

j'ai fait l'installation anaconda mais matplotlib n'est pas traqué

il commence à tracer quand je l'ai fait

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  
3
répondu Raymond 2014-12-12 04:59:58

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 terrain. Tout fonctionne comme prévu avec les importations et la magie que eNord9 fourni.

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 () en dehors de l'extrémité du type de parcelle, vous recevez une non-erreur quelque peu ambiguë.

code erroné:

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 fait une erreur de syntaxe. L'intrigue n'est pas imprimer.

1
répondu Blake M 2017-05-23 12:26:38