Альтаир - фильтровать диапазон по привязке слайдера

Я пытаюсь достичь чего-то похожего на этот пример , за исключением того, что вместо использования ползунка для выбора дискретных значений я хотел бы, чтобы он служил точкой отсечки в 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, который имел бы смысл для выбора.

Возможно ли такое в Альтаире?


person bergst15    schedule 30.10.2018    source источник


Ответы (1)


Попробуйте следующее выражение фильтра:

transform_filter(
    "datum.refill_time < refill_time_refill_time"
)

где странно выглядящее «refill_time_refill_time» создается из имени выбора «refill_time» и имени поля «refill_time». Хотя я не уверен на 100%, правильно ли это, но в любом случае это должен быть «текст ползунка», поэтому в связанном примере это будет «год_год».

person Corvince    schedule 07.12.2018
comment
FWIW, я считаю, что это можно сделать без использования неуклюжего "refill_time_refill_time". Вместо этого вы бы написали transform_filter(select_date.refill_time) (Примечание: здесь нет двойных кавычек!). К сожалению, OP не предоставил данные, поэтому я не могу протестировать его, используя исходный пример, но у меня есть что-то похожее в моем локальном наборе данных. Это было вдохновлено: github.com/altair-viz/altair/issues / 2008 # issuecomment-621428053 - person Ken Lin; 29.04.2021