首页 > 解决方案 > Altair - 通过滑块绑定过滤范围

问题描述

我正在尝试实现与此示例类似的东西,除了不使用滑块来选择离散值之外,我希望它用作 a 中的截止点transform_filter(即值 < 滑块值)。

现在我有这样的事情:

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但找不到任何返回当前值的字段(.ref()尝试)。我也尝试将 to 更改selection_single_multi_interval但我遇到了无效的规范错误 - 我找不到任何方法来定义对binding_range选择有意义的。

这可能在 altair 中吗?

标签: pythonvega-litealtair

解决方案


尝试以下过滤器表达式:

transform_filter(
    "datum.refill_time < refill_time_refill_time"
)

其中奇怪的“refill_time_refill_time”是由选择名称“refill_time”和字段名称“refill_time”构建的。虽然我不是 100% 确定那是否正确,但无论如何它应该是“滑块文本”,所以在链接的示例中它将是“year_year”。


推荐阅读