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

R语言:堆叠时间序列图数值与实际数据不符问题求助

解决方案:实现非累加的堆叠式时间序列展示

问题原因

你当前用的dyOptions(stackedGraph = TRUE)是累加型堆叠逻辑,它会自动把下方系列的数值累加到上方系列上,所以图中var2的曲线显示的是var1 + var2的总和(比如14+35=49),这就是数值超过数据集最大值35的原因。

修改方案

要实现视觉堆叠但保留各变量实际数值的效果,需要关闭累加堆叠,改用填充区域叠加的方式,通过设置系列的填充和透明度来营造堆叠感:

library(dygraphs)

# 构建时间序列数据
var1 = c(5,5,8,13,14,12,11,10,9,9,8,8)
var2 = c(13,13,22,30,35,31,25,24,20,20,20,21)
var1 <- ts(var1, start = 2010, frequency = 12)
var2 <- ts(var2, start = 2010, frequency = 12)
df = cbind(var1,var2)

# 绘制非累加堆叠图
dygraph(df, main = "Overlayed Stacked Graph (Actual Values)") %>%
  # 先绘制底层系列(var2),开启填充并设置透明度
  dySeries("var2", label = "Var2", fillGraph = TRUE, color = "#2196F3", alpha = 0.7) %>%
  # 再绘制上层系列(var1),开启填充并设置稍高的透明度
  dySeries("var1", label = "Var1", fillGraph = TRUE, color = "#4CAF50", alpha = 0.8) %>%
  dyRangeSelector(height = 20) %>%
  dyLegend(show = "always", hideOnMouseOut = FALSE)

效果说明

  • 关闭stackedGraph = TRUE后,每个系列的y轴数值都是原始实际值,var2的最大值将保持35
  • 通过调整dySeries的顺序(先底层后上层)、color和alpha(透明度)参数,实现视觉上的堆叠分层效果
  • 开启fillGraph = TRUE让系列区域填充,叠加后形成堆叠视觉

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:42:26