Altair Brushing#
Download this notebook from GitHub (right-click to download).
import altair as alt
import pandas as pd
import panel as pn
pn.extension('vega', template='fast')
pn.state.template.title = "Altair Brushing Example"
This example demonstrates how to leverage the brushing/linked-selections support in the Vega pane to update a table.
df = pd.read_json("https://raw.githubusercontent.com/vega/vega/master/docs/data/penguins.json")
brush = alt.selection_interval(name='brush') # selection of type "interval"
chart = alt.Chart(df).mark_point().encode(
x=alt.X('Beak Length (mm):Q', scale=alt.Scale(zero=False)),
y=alt.Y('Beak Depth (mm):Q', scale=alt.Scale(zero=False)),
color=alt.condition(brush, 'Species:N', alt.value('lightgray'))
).properties(
width=250,
height=250
).add_selection(
brush
)
vega_pane = pn.pane.Vega(chart, debounce=10)
def filtered_table(selection):
if selection is None:
return '## No selection'
query = ' & '.join(
f'{crange[0]:.3f} <= `{col}` <= {crange[1]:.3f}'
for col, crange in selection.items()
)
return pn.pane.DataFrame(df.query(query), width=600)
pn.Column(
'Select points on the plot and watch the linked table update.',
sizing_mode='stretch_width'
).servable()
pn.Row(
vega_pane,
pn.Column(
pn.bind(filtered_table, vega_pane.selection.param.brush),
scroll=True, width=650, height=300
)
).servable()
This web page was generated from a Jupyter notebook and not all interactivity will work on this website. Right click to download and run locally for full Python-backed interactivity.
Download this notebook from GitHub (right-click to download).