Mit dem Mechanismus Widget von matplotlib können Sie ein interaktives Widget erstellen, indem Sie es in Achsen platzieren, ohne vom GUI-Backend abhängig zu sein.
Das Folgende ist ein Auszug aus Widget-Dokumentation.
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.
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)
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
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
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))
Erstellen Sie als Nächstes Achsen in der Figur.
#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)
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)
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)
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()
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