如何解决如何在 Altair 图表上组合两个滑块?
我有以下数据帧:
num_tra num_ts Year Value
0 0 0 1 100
1 0 0 2 90
2 0 0 3 80
3 0 1 1 90
4 0 1 2 81
5 0 1 3 72
6 1 0 1 81
7 1 0 2 73
8 1 0 3 65
9 1 1 1 73
10 1 1 2 66
11 1 1 3 58
12 2 0 1 142
13 2 0 2 160
14 2 0 3 144
15 2 1 1 128
16 2 1 2 144
17 2 1 3 130
基于多交互 Altair 示例,我尝试根据列 num_tra [0 到 2] 和 num_ts [0 到 1] 的值(在本例中)构建一个带有两个滑块的图表,但它不起作用
import altair as alt
from vega_datasets import data
base = alt.Chart(df,width=500,height=300).mark_line(color="Red").encode(
x=alt.X('Year:Q'),y='Value:Q',tooltip="Value:Q"
)
# Slider filter
tra_slider = alt.binding_range(min=0,max=2,step=1)
ts_slider = alt.binding_range(min=0,max=1,step=1)
slider1 = alt.selection_single(bind=tra_slider,fields=['num_tra'],name="TRA")
slider2 = alt.selection_single(bind=ts_slider,fields=['num_ts'],name="TS")
filter_TRA = base.add_selection(
slider1,slider2
).transform_filter(
slider1,slider2
).properties(title="Sensi_TRA")
filter_TRA
=> 类型错误:transform_filter() 需要 2 个位置参数,但给出了 3 个
一个滑块没问题,但如前所述,我无法在同一个图表上组合两个或多个滑块。
如果您有任何想法,将不胜感激。
解决方法
有几种方法可以做到这一点。如果您希望按顺序应用过滤器,可以使用两个转换语句:
to_csv(<filename>)
或者,您可以使用单个转换语句并使用 filter_TRA = base.add_selection(
slider1,slider2
).transform_filter(
slider1
).transform_filter(
slider2
)
或 &
运算符分别过滤滑块值的交集或并集:
|
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。