whitphx's picture
whitphx HF Staff
Add comments referring to the original file URLs
ef2f056
# Copied from https://github.com/ash2shukla/streamlit-bokeh-events
import streamlit as st
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource, CustomJS
# import function
from streamlit_bokeh_events import streamlit_bokeh_events
# create plot
p = figure(tools="lasso_select")
cds = ColumnDataSource(
data={
"x": [1, 2, 3, 4],
"y": [4, 5, 6, 7],
}
)
p.circle("x", "y", source=cds)
# define events
cds.selected.js_on_change(
"indices",
CustomJS(
args=dict(source=cds),
code="""
document.dispatchEvent(
new CustomEvent("YOUR_EVENT_NAME", {detail: {your_data: "goes-here"}})
)
"""
)
)
# result will be a dict of {event_name: event.detail}
# events by default is "", in case of more than one events pass it as a comma separated values
# event1,event2
# debounce is in ms
# refresh_on_update should be set to False only if we dont want to update datasource at runtime
# override_height overrides the viewport height
result = streamlit_bokeh_events(
bokeh_plot=p,
events="YOUR_EVENT_NAME",
key="foo",
refresh_on_update=False,
override_height=600,
debounce_time=500)
# use the result
st.write(result)