在不同时间间隔具有多个系列的 Dygraph
Dygraph with multiple series at different time intervals
我有 2 组具有不同时间间隔的时间序列,我试图在单个 dygraph 图中显示它们;
- 阶段(河流水位)和模拟阶段 - 5 或 15 分钟间隔
- 降雨量和预报降雨量 - 3 小时间隔
我希望阶段设置为折线图,降雨量显示为类似于下面的阶梯图。
我的问题是,据我所知,您必须将您的时间序列绑定在一起,以便创建多序列 dygraph。 Cbind 用 NA 填充 'missing' 点,导致我的图表出现孤立的降雨点,就像这样
有没有什么方法可以在不将所有内容组合成 1 个时间序列对象的情况下在 dygraph 中叠加绘图?或者,有人有任何巧妙的方法在 cbind 期间填写 NAs 吗?我现在有一段相当不雅的代码来在 cbind 之后填写 NA...
第二个图的示例代码
stage <- zoo(sample(1:100, 154, replace=TRUE), seq(as.POSIXct("2018-08-23"), as.POSIXct("2018-08-31"), by = 4500))
rain <- zoo(sample(1:100, 154, replace=TRUE), seq(as.POSIXct("2018-08-23"), as.POSIXct("2018-08-31"), by = 54000))
eventData <- cbind(stage, rain)
dygraph(eventData, main = "Sitename") %>%
dyOptions(useDataTimezone = TRUE, colors = colour, drawGrid = F) %>%
dyAxis("y", label = "Stage", valueRange = c(0, maxStage+maxStage*.2), independentTicks = TRUE) %>%
dyAxis("y2", label = "Rainfall ", valueRange = c(0, maxRain+maxRain*.5), independentTicks = TRUE) %>%
dySeries("Stage", axis=('y')) %>%
dySeries("Rainfall", axis=('y2'), stepPlot = T, fillGraph = T) %>%
您可以使用 zoo::na.locf
函数来填充缺失的行。
在你的例子中:
stage <- zoo(sample(1:100, 154, replace=TRUE), seq(as.POSIXct("2018-08-23"), as.POSIXct("2018-08-31"), by = 4500))
rain <- zoo(sample(1:100, 154, replace=TRUE), seq(as.POSIXct("2018-08-23"), as.POSIXct("2018-08-31"), by = 54000))
eventData <- cbind(stage, rain)
head(eventData)
stage rain
2018-08-23 00:00:00 85 61
2018-08-23 01:15:00 71 NA
2018-08-23 02:30:00 10 NA
2018-08-23 03:45:00 16 NA
2018-08-23 05:00:00 31 NA
2018-08-23 06:15:00 92 NA
# fill NAs with na.locf
eventData <- na.locf(eventData)
head(eventData)
stage rain
2018-08-23 00:00:00 85 61
2018-08-23 01:15:00 71 61
2018-08-23 02:30:00 10 61
2018-08-23 03:45:00 16 61
2018-08-23 05:00:00 31 61
2018-08-23 06:15:00 92 61
这可以按照你想要的方式绘制:
library(dygraphs)
dygraph(eventData, main = "Sitename") %>%
dyOptions(drawGrid = F) %>%
dyAxis("y", label = "Stage", independentTicks = TRUE) %>%
dyAxis("y2", label = "Rainfall ", independentTicks = TRUE) %>%
dySeries("stage", axis=('y')) %>%
dySeries("rain", axis=('y2'), stepPlot = T, fillGraph = T)
有关填充 NA 的更深入讨论,另请参阅 here。
我有 2 组具有不同时间间隔的时间序列,我试图在单个 dygraph 图中显示它们;
- 阶段(河流水位)和模拟阶段 - 5 或 15 分钟间隔
- 降雨量和预报降雨量 - 3 小时间隔
我希望阶段设置为折线图,降雨量显示为类似于下面的阶梯图。
我的问题是,据我所知,您必须将您的时间序列绑定在一起,以便创建多序列 dygraph。 Cbind 用 NA 填充 'missing' 点,导致我的图表出现孤立的降雨点,就像这样
有没有什么方法可以在不将所有内容组合成 1 个时间序列对象的情况下在 dygraph 中叠加绘图?或者,有人有任何巧妙的方法在 cbind 期间填写 NAs 吗?我现在有一段相当不雅的代码来在 cbind 之后填写 NA...
第二个图的示例代码
stage <- zoo(sample(1:100, 154, replace=TRUE), seq(as.POSIXct("2018-08-23"), as.POSIXct("2018-08-31"), by = 4500))
rain <- zoo(sample(1:100, 154, replace=TRUE), seq(as.POSIXct("2018-08-23"), as.POSIXct("2018-08-31"), by = 54000))
eventData <- cbind(stage, rain)
dygraph(eventData, main = "Sitename") %>%
dyOptions(useDataTimezone = TRUE, colors = colour, drawGrid = F) %>%
dyAxis("y", label = "Stage", valueRange = c(0, maxStage+maxStage*.2), independentTicks = TRUE) %>%
dyAxis("y2", label = "Rainfall ", valueRange = c(0, maxRain+maxRain*.5), independentTicks = TRUE) %>%
dySeries("Stage", axis=('y')) %>%
dySeries("Rainfall", axis=('y2'), stepPlot = T, fillGraph = T) %>%
您可以使用 zoo::na.locf
函数来填充缺失的行。
在你的例子中:
stage <- zoo(sample(1:100, 154, replace=TRUE), seq(as.POSIXct("2018-08-23"), as.POSIXct("2018-08-31"), by = 4500))
rain <- zoo(sample(1:100, 154, replace=TRUE), seq(as.POSIXct("2018-08-23"), as.POSIXct("2018-08-31"), by = 54000))
eventData <- cbind(stage, rain)
head(eventData)
stage rain
2018-08-23 00:00:00 85 61
2018-08-23 01:15:00 71 NA
2018-08-23 02:30:00 10 NA
2018-08-23 03:45:00 16 NA
2018-08-23 05:00:00 31 NA
2018-08-23 06:15:00 92 NA
# fill NAs with na.locf
eventData <- na.locf(eventData)
head(eventData)
stage rain
2018-08-23 00:00:00 85 61
2018-08-23 01:15:00 71 61
2018-08-23 02:30:00 10 61
2018-08-23 03:45:00 16 61
2018-08-23 05:00:00 31 61
2018-08-23 06:15:00 92 61
这可以按照你想要的方式绘制:
library(dygraphs)
dygraph(eventData, main = "Sitename") %>%
dyOptions(drawGrid = F) %>%
dyAxis("y", label = "Stage", independentTicks = TRUE) %>%
dyAxis("y2", label = "Rainfall ", independentTicks = TRUE) %>%
dySeries("stage", axis=('y')) %>%
dySeries("rain", axis=('y2'), stepPlot = T, fillGraph = T)
有关填充 NA 的更深入讨论,另请参阅 here。