Interaktionen¶
Die interact
-Funktion (panel.interact)
erstellt automatisch Steuerelemente zum interaktiven Durchsuchen von Code und Daten.
[1]:
import panel as pn
from panel import widgets
from panel.interact import fixed, interact, interact_manual, interactive
pn.extension()
interact
¶
Auf der einfachsten Ebene werden interact
-Steuerelemente für Funktionsargumente automatisch generiert und die Funktion dann mit diesen Argumenten aufgerufen, wenn ihr die Steuerelemente interaktiv bearbeitet. Zur Verwendung von interact
müsst ihr eine Funktion definieren, die ihr untersuchen möchtet. Hier ist eine Funktion, die das einzige Argument ausgibt: x
.
[2]:
def f(x):
return x
Wenn ihr diese Funktion als erstes Argument zusammen mit einem ganzzahligen Schlüsselwortargument x=10
an interact
übergebt, wird ein Schieberegler generiert und an den Funktionsparameter gebunden.
[3]:
interact(f, x=10)
[3]:
Wenn ihr den Schieberegler bewegt, wird die Funktion aufgerufen, die den aktuellen Wert von x
ausgibt.
Wenn ihr True
oder False
übergebt, generiert interact
ein Kontrollkästchen:
[4]:
interact(f, x=True)
[4]:
Wenn ihr eine Zeichenfolge übergebt, generiert interact
ein Textbereich.
[5]:
interact(f, x="Hi Pythonistas!")
[5]:
interact
kann auch als Decorator verwendet werden. Auf diese Weise könnt ihr sowohl eine Funktion definieren als auch die Art der Interaktion festlegen. Wie das folgende Beispiel zeigt, funktioniert interact
auch mit Funktionen, die mehrere Argumente haben.
[6]:
@interact(x=True, y=1.0)
def g(x, y):
return (x, y)
g
[6]:
Layout interaktiver Widgets¶
Die interact
-Funktion gibt ein Panel zurück, das die Widgets und die Anzeigeausgabe enthält. Durch Indizieren dieser Panel können wir das Layout für die Objekte genau so festlegen, wie wir wollen:
[7]:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
%matplotlib inline
def mplplot(df, **kwargs):
fig = df.plot().get_figure()
plt.close(fig)
return fig
def sine(frequency=1.0, amplitude=1.0, n=200, view_fn=mplplot):
xs = np.arange(n) / n * 20.0
ys = amplitude * np.sin(frequency * xs)
df = pd.DataFrame(dict(y=ys), index=xs)
return view_fn(df, frequency=frequency, amplitude=amplitude, n=n)
[8]:
i = pn.interact(sine, n=(5, 100))
pn.Row(i[1][0], pn.Column("<br>\n### Sine waves", i[0][0], i[0][1]))
[8]:
[9]:
layout = interact(f, x=10)
pn.Column('**A custom interact layout**', pn.Row(layout[0], layout[1]))
[9]:
Argumente festlegen mit fixed
¶
Es kann vorkommen, dass ihr eine Funktion mithilfe von interact
untersuchen möchtet, aber eines oder mehrere ihrer Argumente auf bestimmte Werte festlegen möchtet. Dies kann durch die fixed
-Funktion erreicht werden:
[10]:
def h(p, q):
return (p, q)
[11]:
interact(h, p=5, q=fixed(20))
[11]:
Widget Abbreviations¶
Wenn ihr bestimmte Werte übergebt, verwendet interact
automatisch das passende Widget, z.B. eine Checkbox für True
oder den IntSlider
für ganzzahlige Werte. Ihr müsst also nicht explizit das passende Widget angeben:
[12]:
interact(f, x=widgets.FloatSlider(start=0.0,end=10.0,step=0.01,value=3.0))
[12]:
[13]:
interact(f, x=(0.0,10.0,0.01,3.0))
[13]:
Dieses Beispiel verdeutlicht, wie interact
die Schlüsselwortargumente verarbeitet werden:
Wenn das Schlüsselwortargument eine
Widget
-Instanz mit einemvalue
-Attribut ist, wird dieses Widget verwendet. Dabei kann jedes Widget mit einemvalue
-Attribut verwendet werden, auch benutzerdefinierte.Andernfalls wird der Wert als Widget Abbreviation behandelt, die vor der Verwendung in ein Widget konvertiert wird.
Die folgende Tabelle gibt einen Überblick über verschiedene Widget Abbreviations:
Keyword argument |
Widget |
---|---|
|
|
|
|
Ganzzahliger Wert als |
|
Gleitkommazahl als |
|
|
|