[PYTHON] Erstellen Sie mit Jupplotlib interaktive 3D-Diagramme in Jupyter Lab

1. Zuallererst

2. Übersicht

Widgets that are designed to work for any of the GUI backends. All of these widgets require you to predefine a matplotlib.axes.Axes instance and pass that as the first arg.

3. Spezifische Methode

Also werde ich erklären, wie man ein Diagramm wie das obige erstellt. Außerdem habe ich in JupyterLab Folgendes gemacht, aber wie ich zuvor erklärt habe, hängt matplotlib.widget nicht vom GUI-Backend ab, sodass das gleiche Ergebnis nicht nur auf dem Jupyter-Notebook, sondern auch auf der Linux-, Windows- und Mac-GUI erzielt werden kann. Ich denke, es wird. (Ich habe es nicht zur Hand versucht)

(1) Importieren Sie die erforderliche Bibliothek

Importieren Sie zunächst die erforderlichen Bibliotheken. Sie müssen auch das Backend auf Widget setzen.

%matplotlib widget
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.widgets import Slider
import numpy as np

(2) Erstellen Sie Daten, die als Beispiel angezeigt werden sollen

Zeichnen wir hier als Beispiel einen Graphen von $ z = x ^ 2 + 2y ^ 2 $.

x = y = np.arange(-20, 20, 0.5)
X, Y = np.meshgrid(x, y)
Z = X*X + 2 * Y*Y

(3) Erstellen Sie eine Figur

Wie Sie wissen, ist eine Figur wie ein Campus, auf dem Sie mit matplotlib Diagramme zeichnen. Es ist ein Bild davon, wie man Achsen auf die Figur setzt und darauf zeichnet.

#Abbildung Einstellungen
fig = plt.figure(figsize=(5,5))

(4) Achsen erstellen

Erstellen Sie als Nächstes Achsen in der Figur.

Axes配置.png

#3D-Diagramm und Achsen für Schieberegler in der Abbildung hinzugefügt
axcolor = 'gold'
gs = fig.add_gridspec(20, 20)
ax1 = fig.add_subplot(gs[:17,:], projection='3d')
ax_slider_z = fig.add_subplot(gs[18,:], facecolor=axcolor)
ax_slider_xy = fig.add_subplot(gs[19,:], facecolor=axcolor)

(5) Schiebereglereinstellungen

Erstellen Sie als Nächstes ein Slider-Objekt. Im folgenden Code

Ich mache.

#Schiebereglereinstellungen
z0 = 0
xy0 = 0
delta = 10
slider_z = Slider(ax_slider_z, 'z-axis', -180, 180, valinit=z0, valstep=delta)
slider_xy = Slider(ax_slider_xy, 'xy-axis', -180, 180, valinit=xy0, valstep=delta)

(6) Nachdem Sie den Anfangswert des Betrachtungswinkels des 3D-Diagramms festgelegt haben, zeigen Sie das 3D-Diagramm an.

Stellen Sie als Nächstes die Anfangswerte der sichtbaren Winkel um die z-Achse und um die xy-Ebene des 3D-Diagramms ein. Durch Ändern dieses Werts können Sie den Betrachtungswinkel des 3D-Diagramms verschieben.

#Stellen Sie den Anfangswert der Blickrichtung des 3D-Diagramms ein
ax1.view_init(elev=z0, azim=xy0)

#3D-Grafik anzeigen
ax1.plot_surface(X, Y, Z)

(7) Erstellen Sie eine Rückruffunktion, die aufgerufen wird, wenn der Schieberegler bewegt wird

Erstellen Sie als Nächstes eine Rückruffunktion, die beim Ausführen von Slider aufgerufen wird. Hier können Sie ein sich bewegendes Diagramm erstellen, indem Sie den Betrachtungswinkel des 3D-Diagramms angeben und das Diagramm neu zeichnen.

#Rückruffunktion, die aufgerufen wird, wenn der Schieberegler bewegt wird
def view_change(val):

    sz = slider_z.val
    sxy = slider_xy.val
    ax1.view_init(elev=sxy, azim=sz)
    fig.canvas.draw_idle()    

(8) Rückruffunktionseinstellungen

Stellen Sie abschließend das Slider-Objekt auf die soeben erstellte Rückruffunktion ein.

slider_z.on_changed(view_change)
slider_xy.on_changed(view_change)
plt.show()

Jetzt können Sie ganz einfach ein Diagramm erstellen, das mit JupyterLab funktioniert! Ich habe auch das Wesentliche in [hier] eingefügt (https://gist.github.com/mxl00474/b35ba7a48667265e8551ad20dc2f909a). Verwenden Sie es also bitte, wenn Sie möchten. (Wie oben erklärt ...)

Recommended Posts

Erstellen Sie mit Jupplotlib interaktive 3D-Diagramme in Jupyter Lab
Hinweise zur Verwendung von matplotlib auf dem Server
Python-Entwicklung unter Ubuntu unter AWS EC2 (mit Jupyter Lab)
Erstellen Sie mit CadQuery 3D-Druckerdaten (STL-Datei)
Erstellen Sie ein 3D-Streudiagramm mit SciPy + matplotlib (Python)
Erstellen Sie eine GUI auf dem Terminal mit Flüchen
Versuchen Sie es mit matplotlib
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm