Matplotlib animation funktioniert nicht im IPython Notebook (leeres Grundstück)
Habe ich versucht mehrere Animations-Beispiel-codes und kann nicht arbeiten. Hier ist eine einfache eine, die ich versucht habe von der Matplotlib-Dokumentation:
"""
A simple example of an animated plot
"""
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots()
x = np.arange(0, 2*np.pi, 0.01) # x-array
line, = ax.plot(x, np.sin(x))
def animate(i):
line.set_ydata(np.sin(x+i/10.0)) # update the data
return line,
#Init only required for blitting to give a clean slate.
def init():
line.set_ydata(np.ma.array(x, mask=True))
return line,
ani = animation.FuncAnimation(fig, animate, np.arange(1, 200), init_func=init,
interval=25, blit=True)
plt.show()
Wenn ich ausführen, die oben in einem IPython Notebook, ich sehe nur ein leeres Grundstück erzeugt. Ich habe versucht, läuft diese von mehreren Servern (einschließlich Wakari), auf mehreren Rechnern, mit mehreren Browsern (Chrome, FF, IE).
Kann ich die animation speichern in eine mp4-Datei einfach in Ordnung und er sieht gut aus, wenn Sie gespielt wird.
Jede Hilfe ist willkommen!
- führen Sie es mit der mit in-line-Figuren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gemäß dieser Antwort, können Sie die animation (und voller Interaktivität-Unterstützung) arbeiten Sie in einem IPython notebook die Aktivierung der
nbagg
backend mit%matplotlib nbagg
.Zusammenfassung der Optionen, die Sie haben:
Mit
display
in einer Schleife VerwendenIPython.display.display(fig)
anzeigen eine Abbildung in der Ausgabe. Die Verwendung einer Schleife, die Sie möchten, um die Ausgabe löschen, bevor ein neues Bild angezeigt wird. Beachten Sie, dass diese Methode führt im Allgemeinen nicht so glatte Resultate. Ich würde daher Beratung verwenden Sie eine der unten.CSS:
%matplotlib notebook
Verwenden IPython Magie%matplotlib notebook
um die backend-notebook-backend. Damit wird die Figur lebendig anstelle der Anzeige eine statische png-Datei und kann damit auch Animationen zeigen.Komplettes Beispiel:
CSS:
%matplotlib tk
Verwenden IPython Magie%matplotlib tk
um die backend der tk-backend. Es öffnet sich die Abbildung in einem neuen Plotten-Fenster ist interaktiv und kann damit auch Animationen zeigen.Komplettes Beispiel:
CSS:
Animation konvertieren zu mp4-video -:
oder verwenden Sie
plt.rcParams["animation.html"] = "html5"
zu Beginn des notebook.Dies erfordert zu haben ffmpeg video-codecs zur Verfügung, um auf HTML5-Videos umwandeln. Das video wird dann gezeigt, inline. Dies ist deshalb kompatibel mit
%matplotlib inline
backend. Komplettes Beispiel:CSS:
CSS:
Konvertieren animation JavaScript:
oder verwenden Sie
plt.rcParams["animation.html"] = "jshtml"
zu Beginn des notebook.Dies zeigt die animation als HTML mit JavaScript. Diese in hohem Maße kompatibel mit den meisten neuen Browsern und auch mit der
%matplotlib inline
backend. Es ist erhältlich in matplotlib 2.1 oder höher.Komplettes Beispiel:
CSS:
CSS:
ani.to_html5_video()
stattani.to_html5()
; (b) wer ist @Perfi? Ich sehe weder Antworten noch Kommentare verfasst, die von ihm auf dieser Seite.Ich lief in dieses Problem auch und fand, die ich brauchte, um zu verstehen, das Konzept der matplotlib-backends, wie zum aktivieren einer bestimmten back-End, und die backends arbeiten mit FuncAnimation. Ich habe eine ipython notebook, erklärt die details und fasst zusammen, welche backends arbeiten mit FuncAnimation auf Mac -, Windows-und wakari.io. Das notebook enthält zudem eine Zusammenfassung, die backends arbeiten mit dem ipython interagieren() ein widget und wo Handlungen angezeigt (inline oder sekundären Fenster) für basic-matplotlib plotting. Code und Anleitung sind enthalten, so können Sie reproduzieren der Ergebnisse.
Die Quintessenz ist, dass Sie nicht bekommen kann eine animation erstellt mit FuncAnimation Anzeige inline in einem ipython notebook. Sie können aber für die Darstellung in einem separaten Fenster. Es stellt sich heraus, dass ich brauchte das erstellen von Visualisierungen für ein Bachelor-Klasse, die ich unterrichte dieses semester, und während ich würde viel lieber die Animationen zu inline -, zumindest war ich in der Lage zu schaffen, nützliche Visualisierungen zu zeigen, während Klasse.
Ich hatte genau das gleiche problem wie du, bis vor einem moment. Ich bin ein absoluter Anfänger sind, so tcaswell die Antwort war ein wenig kryptisch für mich. Vielleicht haben Sie herausgefunden, was er meinte, oder Gründen Sie Ihre eigene Lösung. In Fall müssen Sie nicht, ich werde das hier.
Googelte ich "matplotlib inline-Figuren" und fand diese Website, die erwähnt, dass Sie aktivieren müssen, matplotlib-Modus. Leider nur mit
%maplotlib
überhaupt nicht hilfreich.Dann tippte ich
%matplotlib qt
in der IPython console auf eine Lerche, und es funktioniert Prima jetzt, obwohl der plot erscheint in einem separaten Fenster.