【发布时间】:2021-02-01 05:26:04
【问题描述】:
在previous post 中,@jakevdp 在 Altair 使用滑块(为方便起见粘贴在下方):
import altair as alt
import pandas as pd
from vega_datasets import data
us_counties = alt.topo_feature(data.us_10m.url, 'counties')
fdf = pd.read_csv('https://raw.githubusercontent.com/sdasara95/Opioid-Crisis/master/sample_data.csv')
fdf['year'] = fdf['year'].astype(str)
fdf = fdf.pivot(index='fips', columns='year', values='Pill_per_pop').reset_index()
columns = [str(year) for year in range(2006, 2013)]
slider = alt.binding_range(min=2006, max=2012, step=1)
select_year = alt.selection_single(name="year", fields=['year'],
bind=slider, init={'year': 2006})
alt.Chart(us_counties).mark_geoshape(
stroke='black',
strokeWidth=0.05
).project(
type='albersUsa'
).transform_lookup(
lookup='id',
from_=alt.LookupData(fdf, 'fips', columns)
).transform_fold(
columns, as_=['year', 'Pill_per_pop']
).transform_calculate(
year='parseInt(datum.year)',
Pill_per_pop='isValid(datum.Pill_per_pop) ? datum.Pill_per_pop : -1'
).encode(
color = alt.condition(
'datum.Pill_per_pop > 0',
alt.Color('Pill_per_pop:Q', scale=alt.Scale(scheme='blues')),
alt.value('#dbe9f6')
)).add_selection(
select_year
).properties(
width=700,
height=400
).transform_filter(
select_year
)
我是 Altair 的新手,想了解如何进行一些修改 到这个情节:
- 我们如何为这个绘图添加一个随滑块值变化的标题 即“{slider_value_here} 年的药片数量”?
- 如何将滑块标签自定义为
yr而不是当前的year_year值? - 我们如何为每个县添加悬停工具提示,即 fips 值,如下所示 值,{年份:{slider_year_value},fips:{fips_code_value_on_hover},number_pills:{Pill_per_pop}}?
- 我们如何向此滑块添加动画小部件,例如有一个自动改变滑块值的播放按钮(可以在代码中控制时间)?
任何有关修改此代码的帮助都会非常有帮助。我确实尝试过
在各个地方插入 tooltip 以使查询 3 工作,但无法做到
发生。
任何帮助表示赞赏
【问题讨论】:
标签: python altair choropleth