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
相关产品推荐
相关产品推荐

