我如何 select 基于下拉列表的图表数据?
How can I select data for a chart based on a dropdown?
我有一个数据框,我想根据下拉菜单将其子select 一组行。所以给定以下代码:
import pandas as pd
import altair as alt
from vega_datasets import data
cars = pd.melt(data.cars(), ['Horsepower', 'Origin', 'Name', 'Year'])
cars.head()
select_box = alt.binding_select(options=list(cars['variable'].unique()))
selection = alt.selection_single(name='d_axis', fields=['variable'], bind=select_box)
alt.Chart(cars).mark_point().encode(
x='Horsepower',
y='value',
color='Origin',
tooltip='Name'
).add_selection(
selection
).transform_filter(
selection
)
我只想 select 辆原点为 'USA' 的汽车,而不是更改 X 值。
所以实际上
alt.Chart(cars).mark_point().encode(
变成:
alt.Chart(cars[cars['Origin'] == selection]).mark_point().encode(
谢谢,
斯蒂芬
您可以将选择与要过滤的字段相关联:
import altair as alt
from vega_datasets import data
cars = data.cars()
select_box = alt.binding_select(options=list(cars['Origin'].unique()))
selection = alt.selection_single(fields=['Origin'], bind=select_box)
alt.Chart(cars).mark_point().encode(
x='Horsepower',
y='Miles_per_Gallon'
).add_selection(
selection
).transform_filter(
selection
)
我有一个数据框,我想根据下拉菜单将其子select 一组行。所以给定以下代码:
import pandas as pd
import altair as alt
from vega_datasets import data
cars = pd.melt(data.cars(), ['Horsepower', 'Origin', 'Name', 'Year'])
cars.head()
select_box = alt.binding_select(options=list(cars['variable'].unique()))
selection = alt.selection_single(name='d_axis', fields=['variable'], bind=select_box)
alt.Chart(cars).mark_point().encode(
x='Horsepower',
y='value',
color='Origin',
tooltip='Name'
).add_selection(
selection
).transform_filter(
selection
)
我只想 select 辆原点为 'USA' 的汽车,而不是更改 X 值。
所以实际上
alt.Chart(cars).mark_point().encode(
变成:
alt.Chart(cars[cars['Origin'] == selection]).mark_point().encode(
谢谢, 斯蒂芬
您可以将选择与要过滤的字段相关联:
import altair as alt
from vega_datasets import data
cars = data.cars()
select_box = alt.binding_select(options=list(cars['Origin'].unique()))
selection = alt.selection_single(fields=['Origin'], bind=select_box)
alt.Chart(cars).mark_point().encode(
x='Horsepower',
y='Miles_per_Gallon'
).add_selection(
selection
).transform_filter(
selection
)