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
相关产品推荐
相关产品推荐

