Altair - 通过滑块绑定过滤范围
Altair - filter range by slider binding
我正在尝试实现类似于 this example 的东西,除了不使用滑块 select 离散值,我希望它作为 [=11= 中的截止点](即值 < 滑块值)。
现在我有这样的东西:
import altair as alt
from altair.expr import datum
slider = alt.binding_range(min=data.refill_time.min().value,
max=data.refill_time.max().value,
step = 1)
select_date = alt.selection_single(name='refill_time',
fields=['refill_time'],
bind=slider)
refills = alt.Chart(data).mark_bar(
).transform_filter(
datum.refill_time < select_date.ref()
).encode(
alt.X('refill_count:Q',
alt.Y('group:N')
).add_selection(
select_date
)
display(refills)
我尝试查看来自 slider
的数据,但我找不到任何 return 当前值的字段(.ref()
尝试)。我也尝试将 selection_single
更改为 _multi
和 _interval
但我只是遇到无效的规范错误 - 我找不到任何方法来定义对 binding_range
有意义的select离子。
这在 altair 中可行吗?
尝试以下过滤表达式:
transform_filter(
"datum.refill_time < refill_time_refill_time"
)
其中看起来很奇怪的 "refill_time_refill_time" 是由选择名称 "refill_time" 和字段名称 "refill_time" 构成的。虽然我不是 100% 确定这是否正确,但无论如何它应该是 "slider text",所以在链接示例中它将是 "year_year".
我正在尝试实现类似于 this example 的东西,除了不使用滑块 select 离散值,我希望它作为 [=11= 中的截止点](即值 < 滑块值)。
现在我有这样的东西:
import altair as alt
from altair.expr import datum
slider = alt.binding_range(min=data.refill_time.min().value,
max=data.refill_time.max().value,
step = 1)
select_date = alt.selection_single(name='refill_time',
fields=['refill_time'],
bind=slider)
refills = alt.Chart(data).mark_bar(
).transform_filter(
datum.refill_time < select_date.ref()
).encode(
alt.X('refill_count:Q',
alt.Y('group:N')
).add_selection(
select_date
)
display(refills)
我尝试查看来自 slider
的数据,但我找不到任何 return 当前值的字段(.ref()
尝试)。我也尝试将 selection_single
更改为 _multi
和 _interval
但我只是遇到无效的规范错误 - 我找不到任何方法来定义对 binding_range
有意义的select离子。
这在 altair 中可行吗?
尝试以下过滤表达式:
transform_filter(
"datum.refill_time < refill_time_refill_time"
)
其中看起来很奇怪的 "refill_time_refill_time" 是由选择名称 "refill_time" 和字段名称 "refill_time" 构成的。虽然我不是 100% 确定这是否正确,但无论如何它应该是 "slider text",所以在链接示例中它将是 "year_year".