在多面板图中绘制多个时间序列

时间:2015-12-18 18:40:07

标签: r plot time-series panel

我想比较三种不同USGS流量计的河流流量,使用类似于下图所示的多面板图:1]:http://i.stack.imgur.com/QlYyg.png,其中x轴是时间,y轴是河流排放(cfs),每个面板显示每个USGS量具的水位线。下面是前十行数据以及后续创建情节的代码,但没有任何运气。任何建议或解决方案将不胜感激。

> head(flow,n=10)
    DateTime USGS.1 USGS.2 USGS.3
1   1/1/2015   2220   4190   6980
2   1/2/2015   2180   4120   6660
3   1/3/2015   2690   4510   8110
4   1/4/2015   4550  12100  16800
5   1/5/2015   4660   9120  19400
6   1/6/2015   4350  10200  15300
7   1/7/2015   4010   6540  14400
8   1/8/2015   4020   7320  12800
9   1/9/2015   3760   7600  13000
10 1/10/2015   4160   7320  11900
> 
> flow$DateTime<-as.POSIXct(strptime(flow$DateTime,"%m/%d/%Y"))
> 
> flow.xts<-xts(flow,order.by=flow$DateTime)
> 
> plot(flow,screens=c(1,3))

3 个答案:

答案 0 :(得分:0)

试试这个:

library(ggplot2); library(tidyr)
df2 <- gather(df[-1], key = V2)
names(df2) <- LETTERS[1:3]
ggplot(df2, aes(x = A, y = C, group = B)) + geom_line() + facet_grid(B~.)

enter image description here

答案 1 :(得分:0)

你好,tidyr,dplyr和ggplot2

相当容易
library(dlyr)
library(tidyr)
library(ggplot2)

flow %>% gather(Station, Q, USGS.1:USGS.3) %>%
mutate(DateTime=as.POSIXct(strptime(flow$DateTime,"%m/%d/%Y")) %>%
ggplot(aes(x=DateTime, y=Q)) +
   geom_point() +
   facet_wrap(~Station)

这是未经测试的,因为您没有提供可重复的示例。

HTH

答案 2 :(得分:0)

您使用xts的原因是否正确?对于没有时区的时间序列,zoo更灵活。

library(zoo)
flow$DateTime<-as.Date(flow$DateTime,"%m/%d/%Y")
flow.zoo<-zoo(flow[,-1],order.by=flow$DateTime)
plot(flow.zoo, col=1:3)

enter image description here