Интервальный выбор с mark_area
Область считается одним объектом, поэтому обычный выбор выделяет её целиком, а не частично. Здесь две области накладываются друг на друга, а transform_filter имитирует выделение части области.
import altair as alt
from altair.datasets import data
source = data.unemployment_across_industries.url
base = alt.Chart(source).mark_area(
color='goldenrod',
opacity=0.3
).encode(
x='yearmonth(date):T',
y='sum(count):Q',
)
brush = alt.selection_interval(encodings=['x'])
background = base.add_params(brush)
selected = base.transform_filter(brush).mark_area(color='goldenrod')
background + selected
import altair as alt
from altair.datasets import data
source = data.unemployment_across_industries.url
base = alt.Chart(source).mark_area(
color='goldenrod',
opacity=0.3
).encode(
x='yearmonth(date):T',
y='sum(count):Q',
)
brush = alt.selection_interval(encodings=['x'])
background = base.add_params(brush)
selected = base.transform_filter(brush).mark_area(color='goldenrod')
background + selected
Подробнее в связанных разделах документации: