R语言waterfalls包如何设置瀑布图标签为百分比显示格式
R waterfalls 包瀑布图设置百分比格式数值标签
waterfall()函数没有内置的百分比标签开关,通过自定义标签传入即可实现需求,操作如下:
- 首先整理绘图数据,提前计算自动生成的总计值(和
calc_total = TRUE生成的总计逻辑保持一致) - 将原始数值+总计值统一格式化为百分比字符串,作为标签传入
labels参数 - 注意开启总计后,填充色的数量要对应「原始分类数+1」,避免总计块配色不符合预期
可直接运行的示例代码
library(waterfalls) # 可选加载scales包做标准化百分比格式化,不想装可以用后面的自定义方法 library(scales) # 原始绘图数据 plot_df <- data.frame( category = letters[1:5], value = c(1, -0.2, 0.3, -0.1, -0.15) ) # 计算总计值 total_value <- sum(plot_df$value) # 生成带总计的百分比标签,accuracy参数控制百分比精度,1为整数百分比 percent_labels <- percent(c(plot_df$value, total_value), accuracy = 1) # 不依赖scales包的替代格式化方法,按需选用 # percent_labels <- paste0(round(c(plot_df$value, total_value)*100, 0), "%") waterfall( .data = plot_df, # 因为多了总计块,渐变颜色生成6个,和块数量匹配 fill_colours = colorRampPalette(c("#1b7cd6", "#d5e6f2"))(6), fill_by_sign = FALSE, calc_total = TRUE, total_axis_text = 'total', labels = percent_labels, # 传入自定义百分比标签 # 可选:通过rect_text_args调整标签样式,比如大小、颜色 rect_text_args = list(cex = 0.85, col = "#ffffff") )
常见踩坑:如果不提前给总计准备对应位置的标签,总计块会显示空值或者默认的小数值;填充色数量和块数不匹配时,最后一个总计块会复用开头的颜色,破坏渐变效果。
内容的提问来源于stack exchange,提问作者anderwyang
相关产品推荐
相关产品推荐

