ipython notebook --pylab inline: Zoomen eines Diagramms

80

Ist es möglich, in ein Diagramm zu zoomen, wenn Inline aktiviert ist? Insbesondere bei 3D-Plots ist das Drehen und Zoomen ein notwendiges Merkmal.

varantir
quelle

Antworten:

90

Dank mpld3 ist es jetzt ganz einfach, das Zoomen in Inline-Plots zu aktivieren!

Alles was Sie tun müssen, ist mpld3 ( pip install mpld3) zu installieren und dies dann Ihrem Notizbuch hinzuzufügen:

%matplotlib inline
import mpld3
mpld3.enable_notebook()

Jetzt erhalten Ihre Diagramme unten links ein Symbolleistenmenü, in dem Sie das Zoomen mit der Maus aktivieren können :)

yonilevy
quelle
Es scheint, dass 3D-Diagramme noch nicht unterstützt werden: github.com/jakevdp/mpld3/issues/223
Théo T
3
Das ist großartig, aber man sollte hinzufügen, dass es bei einigen der schwereren Diagramme (Diagramme, die beispielsweise Millionen von Punkten enthalten) sehr langsam ist.
2
Ich habe dies in meinem Jupyter Notebook 4.2.2 implementiert und durch Vergrößern wurde die Abbildung leer. Das Hinzufügen von origin = 'lower' als Argument zum Aufruf von imshow () hat das Problem behoben. (zB imshow (res, origin = 'lower', cmap = cm.gray))
DanGoodrick
6
Funktioniert bei mir nicht Ich bekommeJson serialization error
Gulzar
94

Sie können jetzt %matplotlib notebookanstelle von verwenden %matplotlib inlineund mit Ihren Plots interagieren.

João Abrantes
quelle
1
Dies ist eine großartige Lösung. Wenn Sie es versuchen und es nicht funktioniert, überprüfen Sie Ihre Version von matplotlib. Ich denke, dies wurde in Version 1.5 eingeführt
jpobst
Funktioniert nicht so gut, wie ich es mir mit Nebenhandlungen erhofft hatte; kann für ein einzelnes Unterplot zoomen und schwenken, aber nicht das gesamte Plotbild vergrößern / verkleinern. Was, um fair zu sein, nicht die ursprüngliche Frage war, die oben gestellt wurde.
Ijoseph
1
@ijoseph Sie können auch das gesamte Bild vergrößern. Ziehen Sie einfach die rechte untere Ecke des Grundstücks.
João Abrantes
4
Möglicherweise müssen Sie Ihr Notizbuch neu starten, wenn Sie bereits% matplotlib inline
Guido
3
Ich erhalte die Fehlermeldung "Javascript-Fehler: IPython ist nicht definiert"
Ben
10

Gegenwärtig können Sie am nächsten kommen, indem Sie es mit der figsizeFunktion in einer größeren Größe neu zeichnen . Es werden Maße in Zoll erwartet, was mich beim ersten Versuch, es zu verwenden, auffiel.

Es gibt einige Pflanzen für ein umfangreiches Backend, mit denen Plots mithilfe von HTML5 live bearbeitet werden können, aber ich denke, es wird noch einige Monate dauern, bis das fertig ist.

Wenn Sie das Notebook auf Ihrem lokalen Computer verwenden, ist es möglicherweise am einfachsten, den Inline-Modus nicht zu verwenden, sodass die Diagramme als separate Fenster angezeigt werden.

Thomas K.
quelle
1
Ja, mit einer neueren Version von matplotlib können Sie jetzt das nbagg-Backend auswählen.
Thomas K
9

mpld3 hat die Ausführung meiner Notebooks verlangsamt. Ich fand es besser, das nbagg- Backend zu verwenden, das dieselben interaktiven Tools bietet, aber auch das Speichern von Grafiken über das Kontextmenü ermöglicht:

import matplotlib
matplotlib.use('nbagg')
import matplotlib.pyplot as plt
Victor Bettachini
quelle
2
Ich denke ehrlich, dies ist die beste Antwort, sieht viel besser aus als mpld3 und mehr Funktionen.
Bznein
5

Ein weiteres gutes Beispiel, das sich kürzlich herausgestellt hat, ist die Auslagerung des Auftrags an Plot:

https://plot.ly/python/3d-plots-tutorial/

Lassen Sie sie das Rendern, Schwenken und Zoomen für Sie erledigen!

Andrew Mao
quelle