Skip to main content

DashLab

Binder PyPI version Downloads

An enhanced dashboarding library based on ipywidgets' interaction functionality that lets you observe any trait of widgets, observe multiple functions and build beautiful dashboards which can be turned into full screen.

Installation

You can install dashlab using pip:

pip install dashlab

Or if you prefer to install from source, clone the repository and in its top folder, run:

pip install -e .

Interactive Playground

✨ Try it in your browser ✨

Jupyter Lab Notebook Binder
Binder

Features

  • DashboardBase: Create interactive dashboard applications with minimal code by extending the dashlab.DashboardBase class and defining methods with the @callback decorator.
  • Dashboard: A ready-to-use dashboard class that allows quick setup of interactive dashboards without subclassing and supports callbacks after initialization.
  • Custom Widgets:
    • Included custom built widgets for enhanced interaction.
    • Pass any DOMWidget as a parameter to interact/interactive functions unlike default ipywidgets.interactive behavior.
    • Observe any trait of the widget by 'widget_name.trait_name' where 'widget_name' is assigned to a widget/fixed(widget) in control parameters, OR '.trait_name' if trait_name exists on instance of interactive.
    • Tuple pattern (widget, 'trait') for trait observation where widget is accessible via params and trait value goes to callback. This is useful to have widget and trait in a single parameter, such as x = (fig, 'selected') for plotly FigureWidget. Other traits of same widget can be observed by separate parameters with y = 'x.trait' pattern.
    • You can use '.fullscreen' to detect fullscreen change and do actions based on that.
    • Use .params to acess widgets built with given parameters.
    • Use var to observe any python variable which is not a widget and trigger callbacks when var.value changes.
    • Add ipywidgets.Button to hold callbacks which use it as paramter for a click
  • Plotly Integration: Modified plotly support with additional traits like selected and clicked
  • Markdown support:
    • Convert markdown to HTML widget using dashlab.markdown function.
    • hstack and vstack functions support markdown strings to automatically convert to HTML and place in stack.
  • JupyTimer: A non-blocking widget timer for Jupyter Notebooks without threading/asyncio.
  • Event Callbacks: Easy widget event handling with the @callback decorator inside the subclass of DashboardBase or multiple functions in interact/interactive functions.
  • Full Screen Mode: Transform your dashboards into full-screen applications by added button.

Usage Example

import numpy as np
import matplotlib.pyplot as plt
import ipywidgets as ipw
import pandas as pd
import plotly.graph_objects as go
import dashlab as dl

dash = dl.Dashboard(
    fig = dl.patched_plotly(go.FigureWidget()), 
    html = dl.markdown('**Select Box/Lesso on figure traces**'),
    A = (1,10), omega = (0,20), phi = (0,10),
    sdata = 'fig.selected', cdata = 'fig.clicked', fs = '.isfullscreen',
)
@dash.callback('out-click', throttle = 200) # limit click rate by 200 ms
def on_click(cdata,html):
    display(pd.DataFrame(cdata or {}))

@dash.callback('out-select')
def on_select(sdata, html):
    plt.scatter(sdata.get('xs',[]),sdata.get('ys',[]))
    plt.show()

@dash.callback('out-fs')
def detect_fs(fig, fs):
    print("isfullscreen = ",fs)
    fig.layout.autosize = False # double trigger
    fig.layout.autosize = True

@dash.callback
def plot(fig:go.FigureWidget, A, omega,phi): # adding type hint allows auto-completion inside function
    fig.data = []
    x = np.linspace(0,10,100)
    fig.add_trace(go.Scatter(x=x, y=A*np.sin(omega*x + phi), mode='lines+markers'))

dash.set_css({
    '.left-sidebar':{'background':'whitesmoke'},
    ':fullscreen': {'height': '100vh'}}
)
dash.set_layout(
    left_sidebar=['A','omega','phi','html', 'out-select','out-main'], 
    center=['fig','out-click'], 
    pane_widths=[3,7,0],
)

dash

dashboard.gif

Comprehensive Examples

  • Check out the demo.ipynb which demonstates subclassing DashboardBase, using custom widgets, and observing multiple functions through the @callback decorator.
  • See Bandstructure Visualizer and KPath Builder as comprehensive dashboards.

Metadata

Release files for dashlab 0.3.23

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dashlab 0.3.23
File Size Uploaded
dashlab-0.3.23.tar.gz 54.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dashlab 0.3.23
File Interpreter ABI Platform
dashlab-0.3.23-py3-none-any.whl Python 3 none any Details

Total release size: 111.2 kB

Release files / dashlab-0.3.23.tar.gz

Download URL dashlab-0.3.23.tar.gz
Size 54.1 kB
Tags Source
SHA-256 checksum
How to use checksums
19ff2e58315a7d53d5c8dfefc273026be2e15b961e9fb6ff6144df7e834ccb57
BLAKE2b-256 checksum
How to use checksums
6f50a01d7605487d0f4c7a93bc3f8f4a654e9e8b01446bf0ee85218d6a50198a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.4.18

Release files / dashlab-0.3.23-py3-none-any.whl

Download URL dashlab-0.3.23-py3-none-any.whl
Size 57.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
20db0fc95c81914c8b71befb37ef54b15fee9d8cbf395c0b2832f5e6bad50531
BLAKE2b-256 checksum
How to use checksums
215c1c2965288e456839a4c1fbed1b66013e6aa839d1e6ecac738b1adf4c87c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.4.18

Release history Release notifications | RSS feed

This release

0.3.23 This release

2 release files

0.3.22

2 release files

0.3.21

2 release files

0.3.20

2 release files

0.3.18

2 release files

0.3.17

2 release files

0.3.16

2 release files

0.3.15

2 release files

0.3.14

2 release files

0.3.13

2 release files

0.3.12

2 release files

0.3.11

2 release files

0.3.10

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.44

2 release files

0.1.43

2 release files

0.1.42

2 release files

0.1.41

2 release files

0.1.40

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

1 release file

0.1.0

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page