如何使用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
相关产品推荐
相关产品推荐

