Vega-Lite/Altair 向 select 下拉列表添加标签

Vega-Lite/Altair adding labels to select dropdown

我正在尝试找到一种方法来为 altair/vega-lite 中的 binding_select 添加标签。目前看来,自定义 select ui 元素中显示的值的唯一方法似乎是更改列的名称。这适用于常规值,但如何更改“None”值的标签以清除 selection?我试图这样做是为了能够公开图表。在 select ui 中使用“空”值可能会造成混淆。

region_dropdown = alt.binding_select(
    options = [None, 'CHN', 'IND', 'RUS', 'USA', 'AFR', 'LAM', 'EUR']
)

region_selection = alt.selection_single(
    fields=['region'], 
    bind=region_dropdown, 
    init={'region': 'USA'}
)

alt.Chart(data).transform_calculate(
  per_capita='datum.cum_co2/datum.cum_population'
).encode(
  x='year',
  y=alt.Y('mean(per_capita):Q'),
  color=alt.condition(region_selection, 'region:N', alt.value('rgba(0,0,0,0.05)')), 
  detail='region:N'
).mark_line().add_selection(region_selection)

您可以使用 binding_select 中的 labels 选项重命名您的选择标签:

region_dropdown = alt.binding_select(
    options = [None, 'CHN', 'IND', 'RUS', 'USA', 'AFR', 'LAM', 'EUR'],
    labels = ['All', 'CHN', 'IND', 'RUS', 'USA', 'AFR', 'LAM', 'EUR']
)

示例:

import altair as alt
import vega_datasets

data = vega_datasets.data.cars()

region_dropdown = alt.binding_select(
    options = [None, 'USA', 'Europe', 'Japan'],
    labels = ['All', 'USA', 'Europe', 'Japan']
)

region_selection = alt.selection_single(
    fields=['Origin'], 
    bind=region_dropdown, 
    init={'Origin': 'USA'}
)

alt.Chart(data).encode(
  x='Year',
  y=alt.Y('mean(Horsepower):Q'),
  color=alt.condition(region_selection, 'Origin:N', alt.value('rgba(0,0,0,0.05)')), 
  detail='Origin:N'
).mark_line().add_selection(region_selection)