You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Altair可视化:如何让重叠点工具Tip显示所有宝可梦名称

解决Altair散点图重叠点Tooltip仅显示单个条目问题

问题场景

制作《宝可梦绿宝石》宝可梦获取时机散点图时,同一路线、同一等级的宝可梦(如Sceptile、Blaziken、Swampert)点重叠,Tooltip仅显示顶部的宝可梦名称,无法展示所有重叠条目。

核心解决方案:聚合同位置的名称字段

通过transform_joinaggregate对同一位置的宝可梦名称进行聚合,将多个名称合并为一个字段后绑定到Tooltip,就能一次性显示所有重叠点的信息:

chart = alt.Chart(plot_emerald_pokemon).mark_point().encode(
    x = alt.X('earliest_route:N', sort='y'),
    y = alt.Y('obtain_level:Q'),
    tooltip = alt.Tooltip('all_names:N', title='宝可梦名称'),
    color = alt.Color('type1:N'),
).transform_joinaggregate(
    # 将同组内的宝可梦名称用逗号拼接
    all_names='concat(name, ", ")',
    # 按路线和等级分组,确保同一位置的宝可梦被聚合
    groupby=['earliest_route', 'obtain_level']
).properties(
    height=400,
    width=1200
)

chart

补充方案:添加点抖动避免重叠(可选)

如果希望直观区分每个重叠点,可以给X轴添加轻微抖动偏移,让同位置的点分散显示:

chart = alt.Chart(plot_emerald_pokemon).mark_point().encode(
    x = alt.X('earliest_route:N', sort='y').add_jitter(width=0.2),
    y = alt.Y('obtain_level:Q'),
    tooltip = 'name',
    color = alt.Color('type1:N'),
).properties(
    height=400,
    width=1200
)

chart

方案说明

  • 聚合方案适合需要保留点原始位置、仅通过Tooltip查看所有重叠条目的场景;
  • 抖动方案适合需要直观区分每个宝可梦点的场景,但会改变点的精确位置。

内容的提问来源于stack exchange,提问作者John McNally

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 02:22:17