click, dbclick, hover, brush Published by onesixx on 24-02-28 24-02-28
import json
from pathlib import Path
import pandas as pd
from shiny import App, render, ui
import matplotlib.pyplot as plt
mtcars = pd.read_csv(Path(__file__).parent.parent.parent/ "data" / "ex" / "mtcars.csv")
mtcars.drop(["disp", "hp", "drat", "qsec", "vs", "gear", "carb"], axis=1, inplace=True)
app_ui = ui.page_fluid(
ui.head_content(
ui.tags.style(
"""
pre, table.table { font-size: smaller; }
"""
)
),
ui.row(
ui.output_plot("plt_mainplot", "Matplotlib scatterplot of mtcars",
click =ui.click_opts(),
dblclick=ui.dblclick_opts(),
hover =ui.hover_opts(),
brush =ui.brush_opts(),
# click =True,
# dblclick=True,
# hover =True,
# brush =True
),
),
ui.row(
ui.column(3, ui.output_text_verbatim("click_info") ),
ui.column(3, ui.output_text_verbatim("dblclick_info")),
ui.column(3, ui.output_text_verbatim("hover_info") ),
ui.column(3, ui.output_text_verbatim("brush_info") ),
),
)
def server(input, output, session):
@output
@render.plot(alt="Matplotlib scatterplot of mtcars")
def plt_mainplot():
fig, ax = plt.subplots()
plt.title("Good old mtcars")
ax.scatter(mtcars["wt"], mtcars["mpg"])
return fig
@output
@render.text()
def click_info():
return "click:\n" + json.dumps(input.plt_mainplot_click(), indent=2)
@output
@render.text()
def dblclick_info():
return "dblclick:\n" + json.dumps(input.plt_mainplot_dblclick(), indent=2)
@output
@render.text()
def hover_info():
return "hover:\n" + json.dumps(input.plt_mainplot_hover(), indent=2)
@output
@render.text()
def brush_info():
return "brush:\n" + json.dumps(input.plt_mainplot_brush(), indent=2)
app = App(app_ui, server, debug=True)
import json
from pathlib import Path
import pandas as pd
from shiny import App, render, ui
import matplotlib.pyplot as plt
mtcars = pd.read_csv(Path(__file__).parent.parent.parent/ "data" / "ex" / "mtcars.csv")
mtcars.drop(["disp", "hp", "drat", "qsec", "vs", "gear", "carb"], axis=1, inplace=True)
app_ui = ui.page_fluid(
ui.head_content(
ui.tags.style(
"""
pre, table.table { font-size: smaller; }
"""
)
),
ui.row(
ui.output_ui("plot_ui"),
# ui.output_plot("plt_mainplot", "Matplotlib scatterplot of mtcars",
# click =ui.click_opts(),
# dblclick=ui.dblclick_opts(),
# hover =ui.hover_opts(),
# brush =ui.brush_opts(),
# # click =True,
# # dblclick=True,
# # hover =True,
# # brush =True
# ),
),
ui.row(
ui.column(3, ui.output_text_verbatim("click_info") ),
ui.column(3, ui.output_text_verbatim("dblclick_info")),
ui.column(3, ui.output_text_verbatim("hover_info") ),
ui.column(3, ui.output_text_verbatim("brush_info") ),
),
)
def server(input, output, session):
@output
@render.ui
def plot_ui():
hover_opts_kwargs = {}
brush_opts_kwargs = {}
return ui.output_plot(
"plt_mainplot",
click=ui.click_opts(),
dblclick=ui.dblclick_opts(),
hover=ui.hover_opts(**hover_opts_kwargs),
brush=ui.brush_opts(**brush_opts_kwargs),
)
@output
@render.plot(alt="Matplotlib scatterplot of mtcars")
def plt_mainplot():
fig, ax = plt.subplots()
plt.title("Good old mtcars")
ax.scatter(mtcars["wt"], mtcars["mpg"])
return fig
@output
@render.text()
def click_info():
return "click:\n" + json.dumps(input.plt_mainplot_click(), indent=2)
@output
@render.text()
def dblclick_info():
return "dblclick:\n" + json.dumps(input.plt_mainplot_dblclick(), indent=2)
@output
@render.text()
def hover_info():
return "hover:\n" + json.dumps(input.plt_mainplot_hover(), indent=2)
@output
@render.text()
def brush_info():
return "brush:\n" + json.dumps(input.plt_mainplot_brush(), indent=2)
app = App(app_ui, server, debug=True)