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.
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.
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.
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
.
So machen Sie matplotlib in Jupyter (IPython 3) standardmäßig inline:
Datei bearbeiten ~/.ipython/profile_default/ipython_config.py
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
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.
Ich habe einen Workaround gefunden, der ziemlich zufriedenstellend ist. Ich habe Anaconda Python installiert und das funktioniert jetzt für mich von Anfang an.
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
Unter Ubuntu können Sie %matplotlib inline
entfernen, solange Sie plt.show()
nach der Erstellung des Diagramms haben.
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.
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 :)