"""Dev app to try things out."""
import pandas as pd
from dash import callback, html, Input, Output, no_update
import vizro.models as vm
import vizro.plotly.express as px
from vizro import Vizro
from vizro.models.types import capture
iris = px.data.iris()
@capture("figure")
def custom_figure(data_frame, material):
return html.P(f"Material: {material}"),
page = vm.Page(
title="My Page Title",
components=[
vm.Graph(
id="scatter_chart",
title="My Graph",
figure=px.scatter(
data_frame=iris,
x="sepal_width",
y="sepal_length",
color="species",
custom_data=["species"],
)
),
vm.Figure(
id="figure_id",
figure=custom_figure(
data_frame=iris,
material="species",
)
)
],
controls=[
vm.Filter(column="species"),
vm.Parameter(
targets=["figure_id.material"],
selector=vm.RadioItems(
id="parameter_id",
options=["setosa", "versicolor", "virginica"],
value="setosa",
)
)
]
)
@callback(
Output("parameter_id", "value"),
Input("scatter_chart", "clickData"),
)
def update_parameter(graph_click_data):
if graph_click_data is None:
return no_update
return graph_click_data["points"][0]["customdata"][0]
dashboard = vm.Dashboard(pages=[page])
Vizro().build(dashboard).run(debug=False)