Animation im iPython-Notizbuch

9

Ich versuche Animationen in ein iPython-Notizbuch zu schreiben und finde keine Lösung. Ich habe einen Beitrag gesehen, in dem interaktive Widgets diskutiert wurden, aber es gibt ein paar Probleme, die ich damit habe: Erstens verwendet jedes Beispiel, das ich mit Widgets sehe, einen Schieberegler oder eine andere Eingabe, während ich möchte, dass die Animation automatisch ausgeführt wird es läuft. Zweitens scheint die gesamte Dokumentation auf Jupyters Website veraltet zu sein - immer wenn ich ihre Notizbücher herunterlade und laufe, erhalte ich die Meldung, dass bestimmte Module veraltet sind und später in der Datei etwas fehlschlägt, vermutlich weil sie versuchen zu importieren und Greifen Sie auf Dateien zu, die nicht mehr existieren.

Ich habe ein paar andere Seiten über das Thema gesehen, aber sie erfordern oft das Herunterladen von Binärdateien oder anderen Modulen, aber ich benutze es teilweise, um einigen Schülern Math beizubringen und ich habe sie dazu gebracht, Anaconda herunterzuladen - ich hatte gehofft um das Problem nicht weiter zu verwirren, indem man sie dazu bringt, kompliziertere Dinge herunterzuladen und zu installieren, während man Zeit damit verbringt, nicht über das Math zu sprechen.

Kurz gesagt, gibt es eine Möglichkeit, Animationen in einem iPython-Notizbuch zu erstellen, die nur die Verwendung einfacher Importbefehle erfordern, die sozusagen mit der Software von Anaconda ausgeführt werden?

[Edit: Ich sollte auch beachten, dass ich Tkinter verwendet habe, um Animationen zu erstellen, und ich könnte einen in Matplotlib machen, bin ich mir sicher. Wenn es also einen Weg gäbe, die Animationen zu erzeugen, die Sie mit denen erzeugen, die in einem iPython-Notebook gerendert werden, wäre das sicherlich eine funktionierende Lösung für mich.]

[Weiterführende Bearbeitung: Ich denke, ich könnte auch sagen, was ich im Moment zu animieren hoffe, obwohl ich wirklich sehr flexibel sein möchte in Bezug auf die vielen Dinge, die ich animieren könnte, wenn ich mich entscheide. Im Moment versuche ich eine digitale Uhr zu machen, die jede Ziffer in sumerischen Basis-60-Ziffern anzeigt, um ein anderes Zähl- und Basissystem zu veranschaulichen. Also sollte es zuerst | anzeigen dann nach einer Sekunde || und so weiter, bis zehn als & lt; und so weiter, bis die Uhr schließlich zu einer Minute übergeht, in der jetzt |: | angezeigt wird um eine Minute, eine Sekunde darzustellen.]

    
Addem 21.02.2016, 04:58
quelle

4 Antworten

11

Einige Optionen zum Animieren von Plots in Jupyter / IPython mit matplotlib:

  • Verwenden von display in einer Schleife Verwenden Sie IPython.display.display(fig) , um eine Zahl in der Ausgabe anzuzeigen. Mit einer Schleife möchten Sie die Ausgabe löschen, bevor eine neue Figur angezeigt wird. Beachten Sie, dass diese Technik im Allgemeinen nicht so glatte Resluts gibt. Ich würde daher empfehlen, eines der folgenden zu verwenden.

    %Vor%
  • %matplotlib notebook Verwenden Sie IPython magic %matplotlib notebook , um das Backend auf das Notebook-Backend zu setzen. Dadurch bleibt die Figur am Leben, anstatt eine statische PNG-Datei anzuzeigen und kann daher auch Animationen anzeigen.
    Vollständiges Beispiel:

    %Vor%
  • %matplotlib tk Verwenden Sie IPython magic %matplotlib tk , um das Backend auf das tk-Backend zu setzen. Dies öffnet die Figur in einem neuen Zeichenfenster, welches interaktiv ist und somit auch Animationen zeigen kann.
    Vollständiges Beispiel:

    %Vor%
  • Animation in mp4-Video umwandeln (Option bereits von @Perfi erwähnt):

    %Vor%

    oder verwenden Sie plt.rcParams["animation.html"] = "html5" am Anfang des Notebooks. Dies erfordert die Verwendung von ffmpeg-Videocodecs, die in HTML5-Video konvertiert werden können. Das Video wird dann inline angezeigt. Dies ist daher kompatibel mit %matplotlib inline backend. Vollständiges Beispiel:

    %Vor%
    %Vor%
  • Animation in JavaScript konvertieren :

    %Vor%

    oder verwenden Sie plt.rcParams["animation.html"] = "jshtml" am Anfang des Notebooks. Dadurch wird die Animation als HTML mit JavaScript angezeigt. Dies ist sehr kompatibel mit den meisten neuen Browsern und auch mit dem %matplotlib inline Backend. Es ist verfügbar in Matplotlib 2.1 oder höher.
    Vollständiges Beispiel:

    %Vor%
    %Vor%
ImportanceOfBeingErnest 22.10.2017, 19:55
quelle
11

Sie können dieses Tutorial interessant finden.

Wenn Sie das, was Sie brauchen, in eine Matplotlib-Animation umwandeln können, und ich bin ziemlich sicher, dass es möglich ist, können Sie dann

verwenden %Vor%

und zeigen Sie Ihre Animation mit

an %Vor%

Könnte sich als nützlich erweisen!

    
Perfi 09.06.2016 16:13
quelle
1

Ich hatte ein ähnliches Problem und diese Frage half mir, anzufangen. Ich habe ein Notizbuch zusammengestellt, das illustriert, wie man FuncAnimation zusammen mit guten Erklärungen benutzt, warum das Notebook einige Dinge so macht, wie es ist. Es enthält auch Links zu Anweisungen auf FFmpeg. Es enthält auch Links zu Beispielen, die ich zur Entwicklung und zum Verständnis von Animationen verwendet habe. Sie können meinen Beitrag einsehen unter: Animation Abbildung

Für Ihre Frage könnten interaktive Schieberegler ein besseres Werkzeug sein. Ich habe auch ein Notizbuch erstellt, das interaktive Widgets in Jupyter zeigt. Es ist verfügbar hier ; die interaktiven Teile funktionieren jedoch nicht dort.

Beide sind in einem GitHub Repostory

verfügbar     
Will Holmes 01.11.2016 15:51
quelle
1

Jupyter Widgets ist eine gute Möglichkeit, Animationen anzuzeigen. Der folgende Code zeigt ein animiertes GIF .....

%Vor%

Sie können diese Animation schließen mit:

%Vor%

N.B. Ich habe ein paar nette animierte Gifs von Ссылка gefunden.

    
DougR 13.06.2017 12:14
quelle