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