click, dbclick, hover, brush

Published by onesixx on

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)
Categories: Uncategorized

onesixx

Blog Owner

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x