Currently i am working on my first webapplication in Shiny. Through text input from the user a MySQL query is being made and data is being retrieved from the SQL database. In my code snippet I removed the queries to keep it more clear. The data is then being used to create a pandas dataframe df_meetdata
and a graph fig
. Currently the app shows the graph but not the dataframe since it is not possible to return multiple variables in Shiny. Does someone know a way how I can show both the graph and dataframe?
app_ui = ui.page_fluid(
ui.layout_sidebar(
ui.panel_sidebar(
ui.input_slider("n", "N", 0, 100, 20),
ui.input_text("txt", "Referentienummer", value=""),
ui.input_action_button("run", "Run"),
ui.input_action_button("clear", "Clear"),
ui.input_action_button("export", "Export")
),
ui.panel_main(
ui.output_text("nmr"),
ui.output_text("print_referentienummer"),
ui.output_plot("get_absorptie_spectrum"),
ui.output_table("table_model"),
),
),
)
def server(input, output, session):
@output
@render.text
def nmr():
return f"input = {input.n()}"
@output
@render.text
def print_referentienummer():
return f"Referentienummer = {input.txt()}"
@output
@render.plot
@reactive.event(input.run, ignore_none=True)
def get_absorptie_spectrum():
# Ophalen datum meting + sensorID om absorptiewaarden uit de mysql db te kunnen halen
referentienummer = input.txt()
#SQL queries for retrieving the data#
df_meetdata = pd.DataFrame(
{"BlueBox": bluebox_naam, "Referentienummer": referentienummer, "Datum": date_time,
"ABS >= 2": max_absorptie}, index=[0])
fig, ax = plt.subplots()
ax.plot(golflengte, absorptie_waarden)
ax.set_title(referentienummer)
return fig