У меня есть следующий код в Altair, который генерирует динамическую карту хлороплетов:
columns = [str(year) for year in range(20200307, 20200331)]
slider = alt.binding_range(min=20200307, max=20200330, step=1)
select_date = alt.selection_single(name = "date_num", fields=['date_num'],
bind=slider, init = {'date_num': 20200307})
alt.Chart(states).mark_geoshape(
stroke='black',
strokeWidth=0.05
).project(
type='albersUsa'
).transform_lookup(
lookup='id',
from_=alt.LookupData(data_of_interest, 'id', columns)
).transform_fold(
columns, as_=['date_num', 'case_to_pop_ratio']
).transform_calculate(
date_num='parseInt(datum.date_num)',
case_to_pop_ratio='datum.case_to_pop_ratio'
).encode(
color = alt.condition(
'datum.case_to_pop_ratio > 0',
alt.Color('case_to_pop_ratio:Q', scale=alt.Scale(scheme='lightgreyred')),
alt.value('#dbe9f6')
)
).add_selection(
select_date
).properties(
width=700,
height=450
).transform_filter(
select_date
).resolve_scale(
color='shared'
)
Однако получившаяся диаграмма изменяет масштаб цветового градиента по мере перемещения ползунка, что затрудняет интерпретацию результатов. Есть ли способ сохранить постоянство шкалы?
Мой файл данных слишком велик для ссылки, но он отформатирован точно так же, как этот файл данных, из отдельного вопроса Stack Overflow: https://github.com/sdasara95/Opioid-Crisis/blob/master/sample_data.csv