如何解决带有下拉变量选择器的 Altair 热图
考虑这个玩具数据集:
import pandas as pd
import altair as alt
df = pd.read_json('https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json')
df = df.groupby(['Origin','Year'])[['Miles_per_gallon','Weight_in_lbs','displacement']].mean().reset_index()
df = pd.melt(df,id_vars=['Origin','Year'],value_vars=['Miles_per_gallon','displacement'])
df.head()
Origin Year variable value
0 Europe 1970-01-01 Miles_per_gallon 25.20
1 Europe 1971-01-01 Miles_per_gallon 28.75
2 Europe 1972-01-01 Miles_per_gallon 22.00
3 Europe 1973-01-01 Miles_per_gallon 24.00
4 Europe 1974-01-01 Miles_per_gallon 27.00
我想制作一个热图,我可以在其中选择要对填充颜色进行编码的变量。从文档来看,这似乎可行,因为下拉选择器会根据所选变量对 df 进行子集:
dropdown = alt.binding_select(options=list(df.variable.drop_duplicates()))
alt.Chart(df).mark_rect().encode(
x='Origin:N',y='Year:T',color='value:Q',).add_selection(
alt.selection_single(fields=['variable'],bind=dropdown,name='Select')
)
这会生成一个热图,但选择器没有效果。选择用于热图颜色编码的变量的正确方法是什么?
解决方法
您需要将选择分配给变量名称,并通过 add_selection
将其添加到图表中,并通过 transform_filter
将其绑定以过滤数据。
dropdown = alt.binding_select(options=list(df.variable.drop_duplicates()))
selection = alt.selection_single(fields=['variable'],bind=dropdown,name='Select')
alt.Chart(df).mark_rect().encode(
x='Origin:N',y='Year:T',color='value:Q',).add_selection(
selection
).transform_filter(
selection
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。