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

如何基于分组数据在dygraph中绘制多系列折线图?

解决dygraph绘制多分组折线图的问题

要处理多分组(Medium/Short)的折线图,核心是先把长格式的分组数据转成宽格式——因为dygraph要求每个数据系列对应单独一列的结构。具体操作步骤如下:

1. 加载所需工具包

先把需要用到的包加载好:

library(tidyr)    # 用于转换数据格式
library(xts)      # 处理时间序列对象
library(dygraphs) # 绘制交互式折线图

2. 转换数据格式

把你的长格式数据(含Date、Em_balde、Valor三列)转成宽格式,让每个分组取值(Medium/Short)单独成为一列:

# 用tidyr的pivot_wider转换:Date作为行索引,Em_balde的取值作为列名,Valor为对应列的值
df_wide <- df %>%
  pivot_wider(names_from = Em_balde, values_from = Valor)

如果你的R版本较旧,也可以用reshape2包的dcast实现:

library(reshape2)
df_wide <- dcast(df, Date ~ Em_balde, value.var = "Valor")

3. 生成xts时间序列对象

基于宽格式数据生成xts对象,此时每一列对应一个分组的数值序列:

xts_data <- xts(x = df_wide[, -1], order.by = df_wide$Date)

4. 绘制多系列折线图

现在就可以用dygraph绘图了,宽格式的xts会自动识别每一列作为一个数据系列,你也可以自定义系列标签:

dygraph(xts_data, main = "Em Balde - Médio & Curto") %>%
  # 自定义系列标签(可选,不设置会默认用列名)
  dySeries("Medium", label = "Médio") %>%
  dySeries("Short", label = "Curto") %>%
  dyOptions(labelsUTC = TRUE, fillGraph=TRUE, fillAlpha=0.1, drawGrid = FALSE, stepPlot = TRUE) %>%
  dyHighlight(highlightCircleSize = 5, highlightSeriesBackgroundAlpha = 0.2, hideOnMouseOut = FALSE)

执行后就能同时画出Medium和Short两个分组的折线,鼠标悬停时也会分别高亮对应系列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:50:26