Hoe IPython notebook matplotlib plot inline te maken

Ik probeer een IPython-notebook te gebruiken op MacOS X met Python 2.7.2 en IPython 1.1.0.

Ik krijg matplotlib-afbeeldingen niet inline weergegeven.

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

Ik heb ook %pylab inline en de ipython-opdrachtregelargumenten --pylab=inline geprobeerd, maar dit maakt geen verschil.

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

In plaats van inline afbeeldingen krijg ik dit:

<matplotlib.figure.Figure at 0x110b9c450>

En matplotlib.get_backend() laat zien dat ik de 'module://IPython.kernel.zmq.pylab.backend_inline' backend heb.


Antwoord 1, autoriteit 100%

Ik heb %matplotlib inline gebruikt in de eerste cel van de notebook en het werkt. Ik denk dat je moet proberen:

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

Je kunt ook altijd al je IPython-kernels standaard in inline-modus starten door de volgende configuratie-opties in je configuratiebestanden in te stellen:

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.

Antwoord 2, autoriteit 19%

Als uw matplotlib-versie hoger is dan 1.4, is het ook mogelijk om

IPython 3.x en hoger

%matplotlib notebook
import matplotlib.pyplot as plt

oudere versies

%matplotlib nbagg
import matplotlib.pyplot as plt

Beide activeren de nbagg-backend, wat interactiviteit mogelijk maakt.

Voorbeeld plot met de nbagg backend


Antwoord 3, autoriteit 8%

Ctrl + Enter

%matplotlib inline

Magische lijn 😀

Zie: Plotten met Matplotlib.


Antwoord 4, autoriteit 2%

Gebruik het %pylab inline magische commando.


Antwoord 5

Matplotlib standaard inline maken in Jupyter (IPython 3):

  1. Bestand bewerken ~/.ipython/profile_default/ipython_config.py

  2. Regel toevoegen c.InteractiveShellApp.matplotlib = 'inline'

Houd er rekening mee dat het toevoegen van deze regel aan ipython_notebook_config.py niet zou werken.
Anders werkt het goed met Jupyter en IPython 3.1.0


Antwoord 6

Ik ben het eens met foobarbecue (ik heb niet genoeg recs om gewoon een opmerking onder zijn bericht te kunnen plaatsen):

Het wordt nu aanbevolen om een ​​python-notebook niet te starten met het argument --pylab, en volgens Fernando Perez (maker van ipythonnb) zou %matplotlib inline de initiële notebookopdracht.

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


Antwoord 7

Ik heb een oplossing gevonden die redelijk bevredigend is. Ik heb Anaconda Python geïnstalleerd en dit werkt nu direct voor mij.


Antwoord 8

Ik heb de anaconda-installatie gedaan, maar matplotlib plot niet

Het begon te plotten toen ik dit deed

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

Antwoord 9

Ik had hetzelfde probleem toen ik de plotcommando’s in afzonderlijke cellen in Jupyter uitvoerde:

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 :(

Het probleem is opgelost door de plotcommando’s in een enkele cel samen te voegen:

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

Antwoord 10

U kunt dit probleem simuleren met een syntaxisfout, maar %matplotlib inline lost het probleem niet op.

Eerst een voorbeeld van de juiste manier om een ​​plot te maken. Alles werkt zoals verwacht met de invoer en magie die eNord9 heeft geleverd.

df_randNumbers1 = pd.DataFrame(np.random.randint(0,100,size=(100, 6)), columns=list('ABCDEF'))
df_randNumbers1.ix[:,["A","B"]].plot.kde()

Als u echter () aan het einde van het plottype laat staan, krijgt u een enigszins dubbelzinnige non-error.

Foutieve code:

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

Voorbeeldfout:

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

Behalve dit bericht van één regel, is er geen stacktracering of andere voor de hand liggende reden om aan te nemen dat u een syntaxisfout heeft gemaakt. De plot wordt niet afgedrukt.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

19 − 1 =

Other episodes