it-swarm.com.de

Wie IPython Notebook Matplotlib Plot inline zu machen

Ich versuche, IPython Notebook unter MacOS X mit Python 2.7.2 und IPython 1.1.0 zu verwenden.

Ich kann matplotlib-Grafiken nicht inline anzeigen lassen.

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

Ich habe auch %pylab inline und die ipython-Befehlszeilenargumente --pylab=inline ausprobiert, aber das macht keinen Unterschied.

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

Anstelle von Inline-Grafiken erhalte ich Folgendes:

<matplotlib.figure.Figure at 0x110b9c450>

Und matplotlib.get_backend() zeigt, dass ich das 'module://IPython.kernel.zmq.pylab.backend_inline' Backend habe.

760
Ian Fiske

Ich habe %matplotlib inline in der ersten Zelle des Notizbuchs verwendet und es funktioniert. Ich denke du solltest versuchen:

%matplotlib inline

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

Sie können auch alle IPython-Kernel standardmäßig im Inline-Modus starten, indem Sie die folgenden Konfigurationsoptionen in Ihren Konfigurationsdateien festlegen:

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.
1055
eNord9

Wenn Ihre matplotlib-Version höher als 1.4 ist, können Sie auch verwenden

IPython 3.x und höher

%matplotlib notebook

import matplotlib.pyplot as plt

ältere Versionen

%matplotlib nbagg

import matplotlib.pyplot as plt

Beide aktivieren das nbagg-Backend , das Interaktivität ermöglicht.

Example plot with the nbagg backend

204
Løiten

Ctrl + Enter

%matplotlib inline

Magische Linie: D

Siehe: Plotten mit Matplotlib .

87
CodeFarmer

Ich bin mir nicht sicher, warum Joaquin seine Antwort als Kommentar gepostet hat, aber es ist die richtige Antwort:

starte ipython mit ipython notebook --pylab inline

Bearbeiten: Ok, das ist jetzt veraltet, wie in den Kommentaren unten angegeben. Verwenden Sie den magischen Befehl %pylab inline.

24
foobarbecue

So machen Sie matplotlib in Jupyter (IPython 3) standardmäßig inline:

  1. Datei bearbeiten ~/.ipython/profile_default/ipython_config.py

  2. Zeile hinzufügen c.InteractiveShellApp.matplotlib = 'inline'

Bitte beachten Sie, dass das Hinzufügen dieser Zeile zu ipython_notebook_config.py nicht funktioniert. Ansonsten funktioniert es gut mit Jupyter und IPython 3.1.0

13
volodymyr

Ich muss mich mit foobarbecue einverstanden erklären (ich habe nicht genug recs, um einfach einen Kommentar unter seinem Beitrag einfügen zu können):

Es wird jetzt empfohlen, python notebook nicht mit dem Argument --pylab zu starten, und laut Fernando Perez (Erfinder von ipythonnb) %matplotlib inline sollte dies der erste Notebook-Befehl sein.

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

10
thescoop

Ich habe einen Workaround gefunden, der ziemlich zufriedenstellend ist. Ich habe Anaconda Python installiert und das funktioniert jetzt für mich von Anfang an.

7
Ian Fiske

Ich habe die Anaconda-Installation durchgeführt, aber matplotlib zeichnet nicht

Es beginnt zu plotten, wenn ich das getan habe

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

Unter Ubuntu können Sie %matplotlib inline entfernen, solange Sie plt.show() nach der Erstellung des Diagramms haben.

4
tcratius

Sie können dieses Problem mit einem Syntaxfehler simulieren, jedoch wird %matplotlib inline das Problem nicht beheben.

Zuerst ein Beispiel für den richtigen Weg, um ein Grundstück zu erstellen. Alles funktioniert wie erwartet mit den mitgelieferten Importen und der Magie eNord9 .

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

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

Wenn Sie jedoch () am Ende des Diagrammtyps lassen, wird ein nicht eindeutiger Fehler angezeigt.

Fehlerhafter Code:

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

Beispielfehler:

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

Abgesehen von dieser einzeiligen Nachricht gibt es keine Stapelverfolgung oder einen anderen offensichtlichen Grund für die Annahme, dass Sie einen Syntaxfehler gemacht haben. Der Plot wird nicht gedruckt.

2
Blake M

Ich hatte das gleiche Problem, als ich in Jupyter die Zeichenbefehle in separaten Zellen ausführte:

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

Das Problem wurde gelöst, indem die Zeichenbefehle in einer einzelnen Zelle zusammengefasst wurden:

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