В последнее время я обнаружил, что желает иметь возможность выделять или выбирать только последние n
точки данных в Altair. Например, для данных временного ряда, обновляемых ежедневно, выбор / выделение окна данных за последние 7 дней.
Проблема с condition
заключается в том, что вам нужно явно указать дату или значение, от которого происходит выбор / выделение. Одним из недостатков этого является то, что в случае данных временных рядов, которые обновляются довольно часто, это становится ручной задачей.
Одно из возможных решений - просто использовать собственный Python, а ось x - datetime data, а затем напишите код таким образом, чтобы он программно позаботился обо всем, возможно, используя f-строки.
Мне было интересно, несмотря на эти два решения выше, есть ли способ, изначально встроенный в Altair / Vega-Lite для выбора последних / первых n
точек данных?
Надуманный пример с использованием f-строк -
index = 7 #a perhaps bad way to highlight last 2 data points
data = pd.DataFrame({'time':[0,1,2,3,4,5,6,7,8,9], 'value':[1,2,4,8,16,15,14,13,12,11]})
bar = alt.Chart(data).mark_bar(opacity=1, width=15).encode(
x='time:T',
y='value:Q',
color = alt.condition(alt.datum.time>f'{index}', alt.value('red'), alt.value('steelblue'))
)
text = bar.mark_text(align='center', dy=-10).encode(
text='value:Q'
)
bar+text
введите описание изображения здесь