有没有办法在Altair中动态更改选定点的zorder?

时间:2019-12-20 00:03:22

标签: python altair

我有一个Altair图,在多个 xy 位置上有多个点,类似于Altair教程中的this plot。由于我使用工具提示,因此我希望所选的点升至顶部(即,在matplotlib术语中增加zorder)。有没有办法做到这一点? (如果没有,我很乐意提出功能请求!)

1 个答案:

答案 0 :(得分:1)

否,点的z顺序由图层中每个子图的顺序设置,并且不能动态调整。这对于Vega-Lite的渲染模型非常重要,并且不太可能更改。

但是,您可以用来实现所需功能的一个技巧是覆盖一个重复的图表,该图表将根据所选择的内容进行过滤,以使选定的点显示在所有其他点之上。这是一个示例:

import altair as alt
from vega_datasets import data

cars = data.cars()

selection = alt.selection_single(on='mouseover', nearest=True)

base = alt.Chart(cars).mark_point().encode(
    x='Horsepower:Q',
    y='Miles_per_Gallon:Q',
    color=alt.condition(selection, 'Origin:N', alt.value('lightgray'))
)

alt.layer(
  base.add_selection(selection),
  base.transform_filter(selection).encode(tooltip='Name:N'),
)

Live Chart View