Altair-通过滑块绑定过滤范围

时间:2018-10-30 19:03:43

标签: python vega-lite altair

我正在尝试实现与this example类似的东西,除了不使用滑块选择离散值,我希望它用作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())。我还尝试将selection_single分别更改为_multi_interval,但出现了无效的规范错误-我找不到任何方法来定义binding_range选择。

这可能在高空吗?

1 个答案:

答案 0 :(得分:2)

尝试以下过滤器表达式:

transform_filter(
    "datum.refill_time < refill_time_refill_time"
)

其中,通过选择名称“ refill_time”和字段名称“ refill_time”构建外观怪异的“ refill_time_refill_time”。尽管我不是100%不确定那是否正确,但是无论如何都应该是“滑块文本”,因此在链接的示例中应该是“ year_year”。