如何用R语言&EXCEL绘制瀑布图

发布时间:2021-11-22 10:34:29 作者:柒染
来源:亿速云 阅读:646
# 如何用R语言&EXCEL绘制瀑布图

## 一、什么是瀑布图?

瀑布图(Waterfall Chart)是一种特殊的数据可视化形式,用于展示**数值的累积变化过程**。它通过**分步显示正负贡献值**,直观呈现从初始值到最终结果的变化路径,常见于以下场景:

- 财务分析(利润构成、成本分解)
- 销售业绩追踪(月度增长/下降因素)
- 项目进度管理(阶段完成量)
- 库存变化分析

![瀑布图示例](https://raw.githubusercontent.com/R-CoderDotCom/sampleplots/main/waterfall.png)

## 二、Excel绘制瀑布图(3种方法)

### 方法1:使用内置瀑布图(Office 2016+)

```excel
步骤:
1. 准备数据(需包含初始值、各变化值、最终值)
2. 选中数据 → 插入 → 图表 → 瀑布图
3. 右键设置"汇总柱"(通常为初始值和最终值)

优点:操作简单,自动配色
缺点:旧版Excel不支持

方法2:堆积柱形图改造

步骤:
1. 创建辅助列计算"起始位置":
   - C2 = 0
   - C3 = B2
   - C4 = B2+B3
   - ...(向下填充)
2. 插入堆积柱形图
3. 将"起始位置"系列设为无色
4. 手动调整颜色(增长/下降用不同颜色)

方法3:使用Power Query

步骤:
1. 数据 → 获取数据 → 导入数据
2. 在Power Query中添加索引列
3. 使用"累计和"计算基准位置
4. 加载到模型后创建柱形图

三、R语言绘制瀑布图(4种方案)

方案1:ggplot2基础版

library(ggplot2)
library(dplyr)

data <- data.frame(
  category = c("Start", "Product A", "Product B", "Costs", "End"),
  value = c(200, 50, -30, -70, 150) # 注意最后一个是总和
)

# 计算中间数据
plot_data <- data %>%
  mutate(
    ymin = cumsum(c(0, head(value, -1))),
    ymax = cumsum(value),
    fill_color = ifelse(value >= 0, "Increase", "Decrease")
  )

ggplot(plot_data, aes(x = category)) +
  geom_rect(aes(ymin = ymin, ymax = ymax, 
                xmin = as.numeric(category) - 0.3,
                xmax = as.numeric(category) + 0.3,
                fill = fill_color)) +
  scale_fill_manual(values = c("Increase" = "#4E79A7", 
                              "Decrease" = "#E15759")) +
  labs(title = "Profit Analysis") +
  theme_minimal()

方案2:waterfalls包(最简单)

install.packages("waterfalls")
library(waterfalls)

waterfall(values = c(200, 50, -30, -70),
          labels = c("Start", "Product A", "Product B", "Costs"),
          calc_total = TRUE)

方案3:plotly交互式

library(plotly)

fig <- plot_ly(
  name = "Start", type = "waterfall",
  measure = c("absolute", "relative", "relative", "relative", "total"),
  x = c("Start", "Product A", "Product B", "Costs", "End"),
  y = c(200, 50, -30, -70, 150),
  connector = list(line = list(color = "rgb(63, 63, 63)"))
)

fig <- fig %>% layout(title = "Interactive Waterfall Chart")
fig

方案4:ggalluvial扩展

library(ggalluvial)

ggplot(data = plot_data,
       aes(x = category, stratum = value, alluvium = 1,
           y = value, fill = fill_color)) +
  geom_flow() +
  geom_stratum(alpha = 0.8) +
  scale_fill_brewer(palette = "Set1")

四、进阶技巧与注意事项

1. 数据准备规范

2. 视觉优化建议

3. 常见问题解决

五、应用案例演示

案例1:月度利润分析

# 模拟数据
monthly <- data.frame(
  month = month.abb[1:6],
  profit = c(100, 20, -15, 30, -10, 25)
)

waterfall(monthly$profit, labels = monthly$month)

案例2:项目成本分解

(Excel操作演示)
1. 创建成本项表格
2. 使用条件格式标注超支项
3. 添加数据验证下拉菜单

六、工具对比

特性 Excel R语言
学习曲线 简单 中等
自定义程度 有限 极高
交互性 静态 可交互
大数据支持 10万行限制 无限制
自动化程度 需手动更新 可脚本化

七、延伸学习资源

  1. ggplot2官方文档
  2. Excel瀑布图微软教程
  3. 《R数据可视化手册》第7章
  4. 数据可视化最佳实践(Tufte原则)

提示:实际应用时建议先用手稿画出草图,明确要展示的故事线,再选择合适工具实现。

”`

(注:实际使用时请将代码块中的中文引号替换为英文引号,此处为避免Markdown解析问题保留了中文标点)

推荐阅读:
  1. R语言绘制横向柱装图
  2. python处理excel绘制雷达图

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

r语言 excel

上一篇:R语言如何区分paste()与cat()

下一篇:c语言怎么实现含递归清场版扫雷游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》