【问题标题】:Using two selection types in altair: disable old selection在 altair 中使用两种选择类型:禁用旧选择
【发布时间】:2022-12-05 07:11:09
【问题描述】:

有没有办法在 altair 中有两种选择类型(即,下拉列表和直接选择散点图中的一个点),但一次只有一个处于活动状态?

作为我正在寻找的一个最小例子,

df = pd.DataFrame({'ID':[1,2,3,4,5], 'age':[20,20,19,16,26], 'IQ':[100,79,50,103,99]})

selection_MOUSE = alt.selection_multi(fields=['ID'])
dropdownIDs = alt.binding_select(options=[1,2,3,4,5], name="Selector: ")
selection_DROPDOWN = alt.selection_single(fields=['ID'], bind=dropdownIDs)

c = alt.Chart(df).mark_point(
    filled=True
    ).encode(
        x=alt.X('age:Q'),
        y=alt.Y('IQ:Q'),
        opacity=alt.condition(selection_MOUSE | selection_DROPDOWN, alt.value(1), alt.value(.2)),
        tooltip=['ID']
    ).add_selection(selection_MOUSE, selection_DROPDOWN).interactive()

c.display()

有点难看,但这是一点点的结果点击然后另一点是通过下拉菜单选择.

由于不透明度取决于选择,当单击图形上的一个点时,它保持黑色,其余变为灰色。当从下拉列表中选择一个选项时,图表上的对应点变暗但旧的选择点仍然是黑暗的.

我想知道是否有任何方法可以有两种类型的选择,但每个新选择覆盖旧的选择。因此,期望的结果是最新选择的点(无论是通过单击还是下拉选择)将是图表上唯一变暗的点。

【问题讨论】:

    标签: python visualization altair


    【解决方案1】:

    我认为您需要的是异或运算。根据 altair 的文档 (https://altair-viz.github.io/user_guide/interactions.html#composing-multiple-selections),它们仅提供 AND、OR 和 NOT 操作,因此您必须创建自己的 XOR,如下所示:

    (selection_MOUSE & ~selection_DROPDOWN) | (~selection_MOUSE & selection_DROPDOWN)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-23
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多