我有不同组别组件的时间序列数据。带有各种时间戳的每个组ID(作为日期给出)具有低位和高位响应数据。我想通过facet(ggplot)为(1)Group ID和响应(即(2)Hyper和Hypo响应)绘制每个组的时间序列,以便通过响应的图像是另一个的顶部。任何帮助表示赞赏。通过ggplot在R中绘图
下面给出了一个演示数据集和我迄今为止所做的工作。
set.seed(1)
tdat <- data.frame(Group = rep(paste0("GroupID-", c("A","B")),
each = 100),
Date = rep(seq(Sys.Date(), by = "1 day", length = 100), 2),
Fitted = c(cumsum(rnorm(100)), cumsum(rnorm(100))),
Signif = rep(NA, 200))
tdat <- transform(tdat, Hyper = Fitted + 1.5, Hypo = Fitted - 1.5)
## select 1 region per Site as signif
take <- sample(10:70, 2)
take[2] <- take[2] + 100
tdat$Signif[take[1]:(take[1]+25)] <- tdat$Fitted[take[1]:(take[1]+25)]
tdat$Signif[take[2]:(take[2]+25)] <- tdat$Fitted[take[2]:(take[2]+25)]
和数据帧是这样的 -
> head(tdat)
Group Date Fitted Signif Hyper Hypo
1 GroupID-A 2017-04-18 -0.6264538 NA 0.8735462 -2.1264538
2 GroupID-A 2017-04-19 -0.4428105 NA 1.0571895 -1.9428105
3 GroupID-A 2017-04-20 -1.2784391 NA 0.2215609 -2.7784391
4 GroupID-A 2017-04-21 0.3168417 NA 1.8168417 -1.1831583
5 GroupID-A 2017-04-22 0.6463495 NA 2.1463495 -0.8536505
6 GroupID-A 2017-04-23 -0.1741189 NA 1.3258811 -1.6741189
时间序列被日期给出。
我绘制的数据如下。然而,我的真实数据有更多的组ID,我真的很想为每个组ID分配一张图片,将图片分解为Hyper和Hypo响应。
library(ggplot2)
ggplot(tdat, aes(x = Date, y = Fitted, group = Group)) +
geom_line() +
geom_line(mapping = aes(y = Hyper), lty = "dashed") +
geom_line(mapping = aes(y = Hypo), lty = "dashed") +
geom_line(mapping = aes(y = Signif), lwd = 1.3, colour = "red") +
facet_wrap(~ Group)
再次,任何帮助表示赞赏。
感谢
所以在你的榜样的情节是不是你预期的输出?您是否尝试过'facet_grid()'而不是? – Jimbou