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

如何使用R语言echarts4r包实现瀑布图绘制?

echarts4r完全支持瀑布图的绘制,你可以通过堆叠柱状图+隐藏辅助占位序列的方式实现目标效果,具体实现步骤和可运行代码如下:

实现逻辑

瀑布图本质是特殊的堆叠柱状图,我们新增一个透明的辅助柱用于占位,控制每个数值柱的起始高度,仅显示实际数值变化的部分即可实现效果。

完整代码示例

首先安装并加载依赖包:

# 未安装依赖先执行安装
# install.packages(c("echarts4r", "dplyr", "scales"))
library(echarts4r)
library(dplyr)
library(scales)

然后处理数据并绘图:

# 固定随机种子方便复现效果
set.seed(123)
# 你的原始示例数据
df <- data.frame(
  var = sample(LETTERS, 5),
  value = rnorm(5, mean = 200, sd = 100)
)

# 计算瀑布图所需辅助字段
df <- df %>% 
  mutate(
    # 辅助占位列:当前柱子的起始高度(即之前所有数值的累计和)
    helper = lag(cumsum(value), default = 0),
    # 显示用的数值标签
    show_label = number(value, accuracy = 0.1)
  )

# 可选:添加末尾总计行
total_row <- data.frame(
  var = "总计",
  value = sum(df$value),
  helper = 0,
  show_label = number(sum(df$value), accuracy = 0.1)
)
df_waterfall <- rbind(df, total_row)

# 绘制瀑布图
df_waterfall |> 
  e_charts(x = var) |> 
  # 添加透明辅助占位柱,和后续数值柱共用同一个堆叠组
  e_bar(
    ser = helper, 
    stack = "waterfall_group",
    itemStyle = list(color = "transparent"), # 设为完全透明
    legend = FALSE # 不显示在图例中
  ) |> 
  # 添加实际显示的数值柱
  e_bar(
    ser = value,
    stack = "waterfall_group",
    label = list(show = TRUE, position = "top") # 显示数值标签
  ) |> 
  # 可选样式调整
  e_title(text = "瀑布图效果演示") |> 
  e_y_axis(name = "数值大小") |> 
  e_x_axis(name = "分类项") |> 
  e_legend(show = FALSE) # 隐藏不必要的图例

自定义调整说明

  • 你可以修改itemStyle参数调整数值柱的颜色、边框、圆角等样式
  • 如果不需要显示总计行,直接去掉对应数据处理逻辑,用原始df绘图即可
  • 若存在负数值,该方法也可以自适应显示向下延伸的柱子,无需额外调整

内容的提问来源于stack exchange,提问作者Jorge Hernández

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:45:07