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

如何设置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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:54:04