多个转换滤波器,Altair

时间:2018-10-03 13:41:11

标签: python altair

有没有办法让三个图表一起工作,其中任何一个的选择都会更新另一个图表?

这似乎只能用于两个图,因为从我的角度来看,您只能附加一个变换滤镜。

例如

brush = alt.selection(type='interval')
nationality_select = alt.selection(type='single', fields=['Nationality'])
club_select = alt.selection(type='single', fields=['Club_Position'])

points = alt.Chart().mark_circle().encode(
x='Acceleration',
y='Speed',
color=alt.condition(brush, 'Nationality:N', alt.value('lightgray')),
tooltip=['Club_Position', 'Name']
).add_selection(
    brush
).transform_filter(
    nationality_select
)

bars_nationality = alt.Chart().mark_bar().encode(
    color='Nationality',
    x='count(Nationality)',
    y=alt.Y('Nationality',
        sort=alt.SortField(field='count', order='descending', op='max')
    )
).properties(
    selection=nationality_select
).transform_filter(
    brush
)

bars_club_position = alt.Chart().mark_bar().encode(
    color='Club_Position',
    x='count(Club_Position)',
    y=alt.Y('Club_Position',
    sort=alt.SortField(field='count', order='descending', op='max')
    )
).properties(
    selection=club_select
).transform_filter(
    brush
)

alt.vconcat(points, bars_nationality, bars_club_position, d 
data=fifa.sample(2000))

例如,我不能这样做

.transform_filter(
    brush, nationality_filter
)

那么有什么方法可以添加多个?

1 个答案:

答案 0 :(得分:1)

您可以通过多次调用transform_filter来向图表添加任意数量的过滤器转换。例如:

chart.transform_filter(
    selection1
).transform_filter(
    selection2
)

所有转换将按照添加到图表的顺序应用。

另一种可能的方法是使用布尔逻辑在单个过滤器转换中组合多个选择。例如

chart.transform_filter(
    selection1 & selection2
)

对于您而言,这应该具有相同的效果。