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

如何在R语言plotly生成的柱状图悬停文本中对百分比四舍五入并加百分号

要实现plotly悬浮提示框百分比保留两位小数并添加百分号,有两种常用实现方案:


方案1:预计算占比+自定义悬浮文本(灵活度最高)

该方案可以完全自定义悬浮窗显示的内容,支持按需添加其他需要展示的字段:

# 加载依赖包
library(tidyverse)
library(plotly)

# 数据集加载
prada_stats_test_url <- paste0("https://raw.github.com/",
                               "sebastiansauer/", 
                               "Praxis_der_Datenanalyse/", 
                               "master/",
                               "data/stats_test.csv") 
stats_test <- read.csv(prada_stats_test_url)

# 预计算每个兴趣分组下的通过/未通过占比
plot_data <- stats_test %>% 
  drop_na(interest, bestanden) %>% 
  group_by(interest, bestanden) %>% 
  summarise(count = n(), .groups = "drop_last") %>% 
  mutate(percent = count / sum(count) * 100)

# 绘图并自定义悬浮文本
test <- ggplot(plot_data) +
  aes(x = interest, y = percent/100, fill = bestanden,
      text = paste0("兴趣值: ", interest, "\n",
                    "是否通过: ", bestanden, "\n",
                    "占比: ", round(percent, 2), "%")) +
  geom_col(position = "fill")

# 转换为plotly对象时指定使用自定义text作为悬浮提示
test <- ggplotly(test, tooltip = "text")

test

方案2:修改plotly对象hover模板(改动最小)

该方案不需要修改原有ggplot绘图逻辑,仅对转换后的plotly对象做格式化即可:

# 原有绘图逻辑不变
test <- stats_test %>% 
  drop_na() %>% 
  ggplot() +
  aes(x = interest, fill = bestanden) +
  geom_bar(position = "fill")

test <- ggplotly(test)

# 格式化悬浮提示的百分比样式
test <- test %>% 
  style(hovertemplate = paste0("兴趣值: %{x}<br>",
                               "是否通过: %{fullData.name}<br>",
                               "占比: %{y:.2%}<extra></extra>"))

test

其中%{y:.2%}是plotly内置的格式化语法,会自动将0-1区间的数值转换为百分比格式、保留两位小数并添加百分号。


内容的提问来源于stack exchange,提问作者pmyth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:15:04