Ich werde Ihnen zeigen, wie Sie ein Diagramm erstellen, auf das Sie mit IPython klicken können. Am einfachsten ist es, die Funktion "Interact" ("IPython.html.widgets.interact") zu verwenden, mit der automatisch eine interaktive Benutzeroberfläche erstellt wird.
Hinweis 1) Eine etwas ausführlichere Erklärung als dieser Artikel ist in nbviewer als Verwendung von Interact zusammengefasst. Wenn Sie also interessiert sind, dort Bitte auch.
Hinweis 2) IPython-Notizbuch für diesen Artikel kann unverändert von nbviewer heruntergeladen werden. Wenn Sie das interaktive Zeichnen einfach ausprobieren möchten, bitte.
Laden Sie zuerst das gewünschte Modul.
from __future__ import print_function
from IPython.html.widgets import interact, interactive, fixed
from IPython.html import widgets
Definieren Sie dann zunächst die Funktion, die Sie interaktiv ausführen möchten.
def f(x):
print(x)
Übergeben Sie als Nächstes die Funktion, die Sie ausführen möchten, an das erste Argument der Funktion "Interact" und übergeben Sie ein ähnliches Argument (Widget-Abkürzung) als Schlüsselwortargument. Das ist es. Wenn Sie den folgenden Code ausführen, wird ein Schieberegler angezeigt, auf den Sie gerne klicken.
interact(f, x=(-10, 10, 2));
So sind oben und unten völlig synonym. Oben wird die Abkürzung für Widgets übergeben, und unten wird die Instanz eines Widgets übergeben.
interact(f, x=widgets.IntSliderWidget(min=-10, max=10, step=2, value=0));
Wenn Sie den Anfangswert festlegen möchten, verwenden Sie "Interact" als Dekorateur.
@interact(x=(-10, 10, 2))
def g(x=8):
print(x)
Typische Widgets sind wie folgt. Übergeben Sie das Schlüsselwortargument der Funktion "Interact" entweder an die Widget-Abkürzung links oder an die Widget-Instanz rechts.
Schlüsselwortargument | Widget |
---|---|
True or False |
CheckboxWidget |
u'Hallo Welt!' |
TextareaWidget |
Ganzzahlen verwendenvalue or (min,max) or (min,max,step) |
IntSliderWidget |
Verwenden von reellen Zahlenvalue or (min,max) or (min,max,step) |
FloatSliderWidget |
('orange','apple') or {'one':1,'two':2} |
DropdownWidget |
In Kombination mit dem Zeichnen macht das Klicken noch mehr Spaß. Die folgende Abbildung ist eine Demo, die dynamisch $ y = A , sin (\ omega x + \ alpha) $ zeichnet. Wenn Sie die drei Parameter $ A \ in [0.1, 4.0], \ omega \ in [0.1, 4.0], \ alpha \ in [- \ pi, \ pi] $ mit dem Schieberegler ändern, ändert sich die Zahl entsprechend. Machen. Das macht Spaß!
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
@interact(amp=(0.1, 4.0, 0.1), omega=(0.1, 4.0, 0.1), phase=(-np.pi, np.pi, 0.1),
fn = {'sin': np.sin, 'cos': np.cos, 'tan': np.tan})
def h(amp=1.0, omega=1.0, phase=0.0, fn=np.sin):
domain=[-np.pi, np.pi]
x = np.linspace(domain[0], domain[1], 100)
y = amp * fn(omega * x + phase)
plt.plot(x, y)
plt.plot(-phase/omega, 0, 'or')
plt.xlim(domain)
plt.ylim([-4, 4])