如何隐藏Plotly交互式ggplot图表中的Tooltip颜色轨迹?
实现方案
该需求完全可以实现,核心需要调整两类配置:
- 禁用所有不需要参与Tooltip展示的图层的hover交互,避免生成带颜色的多余空条目
- 给需要展示的图层自定义hover模板,清空默认附带的轨迹颜色标识、名称等附加内容
配置逻辑说明
- ggplot转Plotly时,每个独立的geom图层会对应一个独立的trace,当前代码的trace索引对应关系为:
- 带自定义文本的红色折线:trace 1
- 绿色折线:trace 2
- 半透明置信带:trace 3
- 原代码仅禁用了绿色折线的hover交互,遗漏了置信带图层,导致置信带会在
x unified模式下生成带颜色标识的空条目 - hover模板中的
<extra></extra>标签对应默认展示轨迹颜色、名称的区域,留空即可完全隐藏这部分内容,仅保留你自定义的文本内容 - 如果后续调整了geom图层的顺序,需要对应修改
traces参数的索引,保证配置作用在正确的图层上
可直接运行的修改后代码
library(plotly) library(tidyverse) ## fake data dat <- data.frame(date = seq(as.Date("1910/1/1"), as.Date("1910/1/10"), "days"), pred = 1:10, pred2 = 31:40, ci_low = seq(0, 9, 1), ci_upper = seq(2, 11, 1)) ## plot p1 <- dat %>% ggplot(aes(x = date, y = pred)) + geom_line(color = "red", aes(group = 1, text = paste("date:", date, "\npred:", pred, "\npred2:", pred2, "\nci_low:", ci_low, "\nci_upper:", ci_upper))) + geom_line(aes(group = 1, x = date, y = pred2), color = "green") + geom_ribbon(aes(group = 1, x = date, ymin = ci_low, ymax = ci_upper), alpha = 0.2, linetype = 0) ## 交互配置 ggplotly(p1) %>% layout(hovermode = "x unified") %>% # 给需要展示的红色折线配置自定义hover模板,清空默认附加内容 style( hovertemplate = "%{text}<extra></extra>", traces = 1 ) %>% # 禁用绿色折线、置信带的hover交互,不生成多余Tooltip条目 style( hoverinfo = "skip", traces = c(2, 3) )
内容的提问来源于stack exchange,提问作者DJC
相关产品推荐
相关产品推荐

