Filter Other Elements to Data Selected in Mito
Subscribe to the spreadsheet_selection to enable cross filtering
Motivation
A user uses a Mito spreadsheet to select a few specific rows or columns.
You want to display a graph somewhere else in your dashboard, just based on these few rows or columns.
Crossfiltering using the Mito spreadsheet component
First, set the track_selection
parameter in the Spreadsheet component to True.
Simply use the @mito_callback
to watch for changes on the spreadsheet_selection
prop.
Notably, the spreadsheet_selection
return type will return a Pandas dataframe that corresponds to the selected data in the sheet.
Example: changing a graph based on the current selection in a Mito spreadsheet
from dash import Dash, html, dcc, Output, Input
from dash.exceptions import PreventUpdate
import plotly.express as px
import pandas as pd
from mitosheet.mito_dash.v1 import Spreadsheet, mito_callback, activate_mito
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder_unfiltered.csv')
app = Dash(__name__)
activate_mito(app)
app.layout = html.Div([
Spreadsheet(df, id={'type': 'spreadsheet', 'id': 'sheet'}, track_selection=True),
dcc.Graph(id='graph-content'),
])
@mito_callback(
Output('graph-content', 'figure'),
Input({'type': 'spreadsheet', 'id': 'sheet'}, 'spreadsheet_selection')
)
def update_code(spreadsheet_selection):
if spreadsheet_selection is None:
raise PreventUpdate
# Get selected rows from the original dataframe
index = spreadsheet_selection.index
dff = df.loc[index]
return px.line(dff, x='year', y='lifeExp', color='continent')
if __name__ == '__main__':
app.run(debug=True)
Last updated
Was this helpful?