# Filter Other Elements to Data Selected in Mito

## Motivation

1. A user uses a Mito spreadsheet to select a few specific rows or columns.
2. 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.&#x20;

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

<pre class="language-python"><code class="lang-python">from dash import Dash, html, dcc, Output, Input
<strong>from dash.exceptions import PreventUpdate
</strong>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)
</code></pre>
