如何设置Plotly分组柱状图的hoverinfo或hovertext显示格式
Plotly分组柱状图自定义悬浮提示格式方案
原生Plotly实现
核心修改点:
- 替换
hoverinfo参数值为text,表示优先读取自定义悬浮文本 - 新增
hovertext参数,用<br>实现内容换行,匹配你要的格式 - 修正第二个trace中错误引用的SF_Zoo变量,替换为LA_Zoo
Animals <- c("giraffes", "orangutans", "monkeys") SF_Zoo <- c(20, 14, 23) LA_Zoo <- c(12, 18, 29) data <- data.frame(Animals, SF_Zoo, LA_Zoo) library(plotly) fig <- plot_ly(data, x = ~Animals, y = ~SF_Zoo, type = 'bar', name = 'SF_ZOO', marker=list(color="#556361"), # 自定义SF_ZOO的悬浮内容 hovertext = ~paste0("Animals:", Animals, "<br>SF_ZOO:", SF_Zoo), hoverinfo = "text") fig <- fig %>% add_trace(y = ~LA_Zoo, name = 'LA_ZOO', marker=list(color="#A72608"), # 自定义LA_ZOO的悬浮内容 hovertext = ~paste0("Animals:", Animals, "<br>LA_ZOO:", LA_Zoo), hoverinfo = "text") fig <- fig %>% layout(yaxis = list(title = 'Count'), barmode = 'group') fig
ggplotly实现
核心逻辑:先将宽表数据转为长表适配ggplot语法,在aes中通过text参数自定义悬浮内容,转plotly时指定tooltip为自定义的text即可。
library(ggplot2) library(plotly) library(tidyr) # 宽表转长表 long_data <- pivot_longer(data, cols = c(SF_Zoo, LA_Zoo), names_to = "Zoo", values_to = "Count") p <- ggplot(long_data, aes(x = Animals, y = Count, fill = Zoo, # 自定义悬浮显示内容 text = paste0("Animals:", Animals, "<br>", Zoo, ":", Count))) + geom_col(position = position_dodge()) + scale_fill_manual(values = c("SF_Zoo" = "#556361", "LA_Zoo" = "#A72608")) + labs(y = "Count") # 转plotly时指定仅显示自定义的text内容 ggplotly(p, tooltip = "text")
内容的提问来源于stack exchange,提问作者firmo23
相关产品推荐
相关产品推荐

