如何在 Altair 图表上组合两个滑块?
How to combine two sliders on Altair chart?
我有以下数据框:
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
基于 Multiple Interactions 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
=> TypeError: transform_filter() 接受 2 个位置参数,但给出了 3 个
一个滑块没有问题,但如前所述,我无法在同一张图表上组合两个或多个滑块。
如果您有任何想法,我们将不胜感激。
有几种方法可以做到这一点。如果您希望按顺序应用过滤器,可以使用两个转换语句:
filter_TRA = base.add_selection(
slider1,slider2
).transform_filter(
slider1
).transform_filter(
slider2
)
或者,您可以使用单个转换语句并使用 &
或 |
运算符分别过滤滑块值的交集或并集:
filter_TRA = base.add_selection(
slider1,slider2
).transform_filter(
slider1 & slider2
)
我有以下数据框:
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
基于 Multiple Interactions 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
=> TypeError: transform_filter() 接受 2 个位置参数,但给出了 3 个
一个滑块没有问题,但如前所述,我无法在同一张图表上组合两个或多个滑块。
如果您有任何想法,我们将不胜感激。
有几种方法可以做到这一点。如果您希望按顺序应用过滤器,可以使用两个转换语句:
filter_TRA = base.add_selection(
slider1,slider2
).transform_filter(
slider1
).transform_filter(
slider2
)
或者,您可以使用单个转换语句并使用 &
或 |
运算符分别过滤滑块值的交集或并集:
filter_TRA = base.add_selection(
slider1,slider2
).transform_filter(
slider1 & slider2
)