以下是一个使用Vega-Lite和滑块的Choropleth地图的示例代码:
import altair as alt
from vega_datasets import data
# 加载数据集
source = data.world_110m.url
# 创建滑块
slider = alt.binding_range(min=0, max=100, step=1)
slider_selection = alt.selection_single(bind=slider, fields=['value'], name="滑块")
# 创建Choropleth地图
choropleth = alt.Chart(source).mark_geoshape().encode(
color=alt.Color('population:Q', scale=alt.Scale(scheme='viridis')),
tooltip=[
alt.Tooltip('country:N', title='Country'),
alt.Tooltip('population:Q', title='Population')
]
).transform_lookup(
lookup='id',
from_=alt.LookupData(data=source, key='id', fields=['population'])
).transform_filter(
slider_selection
).project('naturalEarth1')
# 创建滑块控制图表
slider_chart = alt.Chart({'values': [{'value': 50}]}).mark_circle(size=300).encode(
alt.Y('value:Q', axis=alt.Axis(title='滑块')),
).add_selection(
slider_selection
).transform_calculate(
value='datum.value'
)
# 组合地图和控制图表
final_chart = alt.vconcat(choropleth, slider_chart).resolve_scale(color='independent').configure_view(stroke=None)
# 显示图表
final_chart.show()
这个代码示例使用Altair库和vega_datasets中的一个世界地图数据集。它创建一个Choropleth地图,根据人口数量对国家进行着色,并通过滑块控制显示的国家数量。滑块的范围是从0到100,步长为1。
滑块控制部分由slider
和slider_selection
变量创建。slider
定义了滑块的范围和步长,slider_selection
定义了滑块的选择器。
Choropleth地图部分由choropleth
变量创建。它使用mark_geoshape
创建地图,将人口数量映射到颜色并添加了工具提示。通过transform_lookup
和transform_filter
转换操作,根据滑块的选择来过滤和查找数据。
滑块控制图表部分由slider_chart
变量创建。它使用mark_circle
创建一个圆圈,Y轴表示滑块的值。slider_selection
用作选择器,并通过transform_calculate
将值传递给地图。
最后,使用alt.vconcat
将地图和滑块控制图表垂直组合,并使用resolve_scale
和configure_view
对图表进行一些配置。最后,使用final_chart.show()
显示图表。
您可以根据需要修改代码,例如更改数据集或更改滑块的范围。这个示例代码可以在Jupyter Notebook或类似的环境中运行。