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



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

不可以,点的 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'),
)

实时图表视图

最新更新