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

如何在echarts4r包中制作堆叠图?双Y轴系列未堆叠问题

在echarts4r中实现堆叠图(含双Y轴场景)

我来帮你解决这个问题~首先得明确ECharts里堆叠效果的核心逻辑:需要堆叠的系列必须共享同一个X轴和Y轴,并且设置相同的stack参数值。你当前的代码把第二个系列放到了第二个Y轴(y.index = 1),这会让两个系列分属不同的坐标系,自然没法堆叠;另外你也没配置stack参数,这也是关键缺失项。

下面分两种场景给出解决方案:

场景1:单Y轴下的堆叠折线图

如果你的核心需求是堆叠效果,不需要双Y轴,只需要给两个折线系列设置相同的stack名称即可:

library(echarts4r)

# 构建数据并绘制堆叠折线图
data.frame(x=LETTERS[1:5], y=1:5, z=6:10) %>% 
  e_charts(x) %>% 
  e_line(y, stack = "stack_group") %>%  # 给y系列指定堆叠组
  e_line(z, stack = "stack_group")     # z系列加入同一个堆叠组

这样运行后,y和z的数值会在同一个Y轴上叠加,呈现堆叠折线的效果。

场景2:双Y轴下的堆叠(需每个Y轴至少两个系列)

如果你确实需要保留双Y轴,同时实现堆叠,那得保证每个Y轴下至少有两个需要堆叠的系列(单系列没法堆叠)。比如我们新增两个变量,让Y轴0的两个系列堆叠,Y轴1的两个系列堆叠:

library(echarts4r)

# 构造包含多系列的数据集
stack_data <- data.frame(
  x = LETTERS[1:5],
  y1 = 1:5,    # Y轴0的第一个系列
  y2 = 2:6,    # Y轴0的第二个系列(和y1堆叠)
  z1 = 6:10,   # Y轴1的第一个系列
  z2 = 7:11    # Y轴1的第二个系列(和z1堆叠)
)

stack_data %>% 
  e_charts(x) %>% 
  # 配置Y轴0的堆叠系列
  e_line(y1, stack = "y_stack", name = "Y系列1") %>% 
  e_line(y2, stack = "y_stack", name = "Y系列2") %>% 
  # 配置Y轴1的堆叠系列,指定y.index=1
  e_line(z1, stack = "z_stack", y.index = 1, name = "Z系列1") %>% 
  e_line(z2, stack = "z_stack", y.index = 1, name = "Z系列2") %>% 
  # 可选:给第二个Y轴添加名称,提升可读性
  e_y_axis(index = 1, name = "Z轴数值")

对你原代码的问题总结

你之前的代码里,e_line(z, y.index = 1)把z系列放到了独立的第二个Y轴,导致y和z不在同一个坐标系,无法堆叠;同时缺少stack参数,即使在同一Y轴也不会触发堆叠逻辑。根据你的实际需求选择上面的方案即可~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:02:14