Plotly自定义悬停文本功能异常:填充区域未显示自定义内容
解决Plotly自定义悬停在填充区域不生效的问题
我太懂你这个困扰了——设置hoveron='points+fills'后,自定义悬停文本只在数据点上正常显示,填充区域却跳出默认的数值信息,这确实是Plotly的一个容易踩的小坑。问题根源在于:填充层对应的trace并不会自动复用你给数据点设置的自定义hovertext,得单独为填充trace配置悬停参数才行。
修改后的可运行示例代码
直接给你调整好的完整代码,复制就能测试:
library(plotly) data.frame( AA=c(2,3,3,2,NA, 6,7,7,6,NA), BB=c(2,2,3,2,NA, 6,6,7,6,NA), CC=c(rep('abc', 5), rep('xyz', 5)), LL=c(rep('A', 5), rep('B', 5)) ) %>% plot_ly() %>% add_polygons( x = ~AA, y = ~BB, color = ~LL, hoveron = 'points+fills', # 核心修改:给填充层单独指定悬停规则和文本 hoverinfo = 'text', hovertext = ~paste("分组: ", LL, "<br>类别: ", CC), text = ~paste("分组: ", LL, "<br>类别: ", CC) # 兼容部分渲染场景的冗余配置 ) %>% layout(showlegend = TRUE)
关键调整点说明
- 如果你之前用的是
add_scatter加fill参数,本质上填充区域属于该trace的一部分,同样需要给这个trace加上hoverinfo='text'和自定义hovertext hoverinfo='text'是必须的:它会告诉Plotly放弃默认的数值展示,只使用你自定义的文本内容- 显式设置
hovertext为你需要的字符串,确保点和填充区域的悬停内容完全统一
为啥之前的设置没效果?
当你开启hoveron='points+fills'时,Plotly会分开处理两种悬停事件:
- 数据点的悬停信息来自你给点trace配置的hovertext
- 填充区域的悬停信息默认会调用该trace的原始x/y数值,除非你专门给填充对应的trace指定自定义文本
这样调整后,不管悬停在数据点还是填充区域上,都能看到你想要的自定义内容啦!
内容的提问来源于stack exchange,提问作者GP.
相关产品推荐
相关产品推荐

