Skip to content

Shiny

Shiny is a tool to build interactive web applications and dashboards using Python code. Shiny integrates with Jupyter Widgets, which means that Lonboard is supported out-of-the-box.

Pay attention to the "Efficient updates" section of the Shiny documentation. This is the most efficient way to create a reactive map. Take care to not recreate the Map widget from scratch on updates, as that will send data from Python to the browser anew.

Example

import geopandas as gpd
from shiny import reactive
from shiny.express import input, ui
from shinywidgets import render_widget

from lonboard import Map, ScatterplotLayer

colors = {
    "Red": [200, 0, 0],
    "Green": [0, 200, 0],
    "Blue": [0, 0, 200],
}

ui.input_select("color_select", "Color", choices=list(colors.keys()))


@render_widget
def map():
    gdf = gpd.read_file(gpd.datasets.get_path("naturalearth_cities"))
    layer = ScatterplotLayer.from_geopandas(gdf, radius_min_pixels=2)
    return Map(layer)


@reactive.effect
def set_fill_color():
    map.widget.layers[0].get_fill_color = colors[input.color_select()]