如何在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
相关产品推荐
相关产品推荐

