Ich lerne, wie man mit mplot3d schöne Diagramme von 3D-Daten erstellt, und bin bisher ziemlich glücklich. Was ich im Moment versuche, ist eine kleine Animation einer rotierenden Oberfläche. Zu diesem Zweck muss ich eine Kameraposition für die 3D-Projektion festlegen. Ich denke, dies muss möglich sein, da eine Oberfläche mit der Maus gedreht werden kann, wenn matplotlib interaktiv verwendet wird. Aber wie kann ich das aus einem Skript machen? Ich habe in mpl_toolkits.mplot3d.proj3d viele Transformationen gefunden, aber ich konnte nicht herausfinden, wie ich diese für meinen Zweck verwenden kann, und ich habe kein Beispiel für das gefunden, was ich versuche zu tun.
python
matplotlib
mplot3d
Andreas Bleuler
quelle
quelle
%matplotlib notebook
Antworten:
Bei "Kameraposition" möchten Sie die Höhe und den Azimutwinkel anpassen, mit denen Sie das 3D-Diagramm anzeigen. Sie können dies mit einstellen
ax.view_init
. Ich habe das folgende Skript verwendet, um zuerst den Plot zu erstellen, dann habe ich eine gute Höhe ermittelt oderelev
, von der aus ich meinen Plot anzeigen kann. Ich habe dann den Azimutwinkel angepasst oderazim
, um die vollen 360 Grad um mein Diagramm zu variieren, die Zahl bei jeder Instanz gespeichert (und notiert, welcher Azimutwinkel beim Speichern des Diagramms angegeben wurde). Für einen komplizierteren Kameraschwenk können Sie sowohl die Höhe als auch den Winkel anpassen, um den gewünschten Effekt zu erzielen.quelle
ax.elev
undax.azim
-Eigenschaften verfügbar . Sie könnten auch nur geschrieben habenax.azim = ii
oder sogarax.azim += 1
den gleichen Effekt erzielen.Praktisch wäre es, die Kameraposition auf ein neues Diagramm anzuwenden. Also zeichne ich und bewege dann die Handlung mit der Maus, um die Entfernung zu ändern. Versuchen Sie dann, die Ansicht einschließlich der Entfernung auf einem anderen Diagramm zu replizieren. Ich finde, dass axx.ax.get_axes () mir ein Objekt mit den alten .azim und .elev bringt.
IN PYTHON ...
Später 3D-Grafik ...
BEARBEITEN 1 ... OK, die Kameraposition ist die falsche Denkweise bezüglich des .dist-Werts. Es ist eine Art Hackey-Skalarmultiplikator für den gesamten Graphen.
Dies funktioniert für die Vergrößerung / Zoom der Ansicht:
Später Grafik ...
quelle