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

R语言waterfalls包fill_by_sign=TRUE时如何自定义正负柱填充色

实现方法

waterfalls包中fill_by_sign = TRUE时默认的正值绿色、负值红色是函数内部硬编码的规则,没有暴露直接修改默认正负色的入参,要实现正值填充白色、负值填充粉色的效果,手动给每个柱体匹配对应颜色传入即可:

  1. 把fill_by_sign设为FALSE,关闭默认填色逻辑
  2. 根据原始数据的数值正负,给每个分类柱匹配white(正值)或pink(负值)
  3. 给自动计算的总计柱也匹配对应颜色(如果需要总计柱单独配色也可自行指定)
  4. 添加柱体边框,避免白色柱和白色绘图背景融合导致看不见

完整可运行代码如下:

library(waterfalls)

plot_data <- data.frame(category = letters[1:5],
                        value = c(1, -0.2, 0.3, -0.1, -0.15))

# 为原始数据的每个分类匹配填充色
fill_cols <- ifelse(plot_data$value > 0, "white", "pink")
# 为总计柱匹配填充色,这里同样遵循正白负粉规则,要改单独色直接修改total_col即可
total_val <- sum(plot_data$value)
total_col <- ifelse(total_val > 0, "white", "pink")
fill_cols <- c(fill_cols, total_col)

waterfall(.data = plot_data,
          fill_by_sign = FALSE,
          fill_colours = fill_cols,
          calc_total = TRUE,
          total_axis_text = 'total',
          rect_border = "black") # 给柱体加黑色边框,解决白柱隐形问题

注意事项

  • 传入fill_colours的颜色向量长度必须和最终绘制的柱体总数一致:示例中原始数据有5个分类,加上自动生成的总计柱共6个柱体,因此颜色向量长度为6
  • 如果需要让总计柱和增减柱做视觉区分,直接给total_col赋值其他颜色即可,比如设为"grey"即可让总计柱显示为灰色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:21:36