Vega-Lite / Altair添加标签以选择下拉菜单

问题描述

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

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.05)')),detail='region:N'
).mark_line().add_selection(region_selection)

解决方法

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

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

示例:

import altair as alt
import vega_datasets

data = vega_datasets.data.cars()

region_dropdown = alt.binding_select(
    options = [None,'Europe','Japan'],'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.05)')),detail='Origin:N'
).mark_line().add_selection(region_selection)

enter image description here