如何为Waterfalls包绘制的瀑布图设置$xx.xx格式标签
解决Waterfalls包瀑布图标签格式设置问题
问题根源
waterfall()函数会将原始数据转换为内部处理后的数据集,其中数值列名为value而非原数据的Cost,直接引用Cost会导致找不到对象;同时rect_text_labels需要传入包含自动计算的total行的完整标签向量,不能直接使用原数据列。
解决方案
先确保加载必要的包:
library(Waterfalls) library(scales) # 用于生成美元格式的标签
方法1:利用rect_text_labels参数自定义标签
先计算总成本,再生成包含所有项和total的美元格式标签:
# 计算最终总成本 total_cost <- sum(wf$Cost) # 生成带美元符号的标签向量(包含原始项和total) formatted_labels <- c(dollar(wf$Cost), dollar(total_cost)) # 绘制瀑布图并传入自定义标签 waterfall(wf, calc_total=TRUE, rect_width=.4, fill_by_sign=TRUE, total_rect_color="grey", rect_border=NA, rect_text_labels = formatted_labels) + labs(y="Cost", title ="Waterfall", x=NULL)
方法2:添加geom_text层格式化标签
直接引用waterfall()生成的图内部的value列(函数处理后的数值列)进行格式化:
waterfall(wf, calc_total=TRUE, rect_width=.4, fill_by_sign=TRUE, total_rect_color="grey", rect_border=NA) + labs(y="Cost", title ="Waterfall", x=NULL) + # 根据数值正负调整标签位置,避免被柱子遮挡 geom_text(aes(label = dollar(round(value, 2))), vjust = ifelse(value >= 0, -0.5, 1.5))
内容的提问来源于stack exchange,提问作者zxcvfi
相关产品推荐
相关产品推荐

