Interaktive Widgets für Jupyter Notebooks

Neben reinen statischen Elementen gibt es auch sogenannte Widgets mit denen Jupyter Notebooks interaktiver gestaltet werden können. Wir zeigen dir wie es geht.

Im Artikel "JupyterLab zur Analyse und Forschung" hatten wir unter anderem JupyterLab vorgestellt und kurz gezeigt, wie damit gearbeitet wird. Die Fülle an Zusatz Paketen und Bibliotheken ist fest unermesslich. Eine Bibliothek ist ipywidgets. Diese stellt verschiedene Funktionen und Class zur Erstellung von interaktiven Steuerelementen zur Verfügung. Das hat den Vorteil, dass Berechnungen leichter Parametrisiert werden können und nicht jedes mal der Quellcode angepasst werden muss. Dies erleichtert die Arbeit für Menschen die sich mit Jupyter Notebooks und Python nicht so gut auskennen, die Forschungsergebnisse, Algorithmen etc. jedoch leicht nachvollziehen wollen.

Installation

Bevor die Widgets verwendet werden können muss natürlich JupyterLab oder JupyterHub installiert sein. Anschließend kann auch das benötigte Python Paket wie folgt installiert werden.

$ pip install ipywidgets

Verwendung

War die Installation erfolgreich kann das Paket verwendet werden. Die für unser Beispiel benötigten Komponenten stehen nach folgendem import zur Verfügung.

import ipywidgets as widgets
from ipywidgets import interact

Ist das geschafft, legen wir zwei neue Schieberegler an. Der Bereich liegt zwischen 0 und 10 und es ist durch Verschieben nur möglich Ganzezahlen in dem Bereich zu wählen. Nach diesem Schritt ist noch nichts zu sehen.

slider_x = widgets.IntSlider(min=0, max=10)
slider_y = widgets.IntSlider(min=0, max=10)

Als nächstes wird die Funktion f mit zwei Parametern definiert. Diese gibt den Wert der Variablen und der Summe aus beiden aus.

def f(x=0, y=0):
    print("x={}, y={}".format(x, y))
    print("sum={}".format(x + y))

Im nächsten Schritt kommt die interact() Funktion zum Einsatz. Diese bewirkt, dass wenn ein Schieberegler geändert wird, dann wird die Funktion f() mit den beiden Parametern aufgerufen. Damit ist die Berechnung individuell anpassbar.

a = interact(f, x=slider_x, y=slider_y)

Es gibt noch weitere Widgets und auch die Möglichkeit diese Widgets anzuordnen. Ein Beispiel hiefür ist im folgenden Quellcode ersichtlich. Es werden horizontal ein Beschriftungselement, ein Texteingabe-Feld und eine Schaltfläche angezeigt.

widgets.HBox([widgets.Label("Text:"), widgets.Text(), widgets.Button(description="Click")])

Selbst verständlich können hier nicht alle Möglichkeiten aufgezeigt werden. Hier lohnt sich ein Blick in die Dokumentation von ipywidgets.

Bilder

Die Bilder zeigen, wie das Beispiel mit den aktuellen Versionen im Browser aussieht.

Fazit

Die Notebooks sollten meiner Meinung nach nicht mit Widgets überladen werden. Jedoch können sie an vielen Stellen die Arbeit erleichtern und erlauben es schnell und unkompliziert verschiedene Werte und Einstellungen auszuprobieren.

Links

Verwandte Artikel