在R中绘制两个不同的时间序列?

时间:2015-09-07 06:15:18

标签: r plot ggplot2 time-series

我试图使用R中的ggplot2包在同一个地块上绘制两个不同的时间序列。 我不确定为什么它不起作用。我相信这可能是因为其中一个系列是每日数据,一个是每月一次。

我为两个数据框写了一些代码:

ras <- data.frame(
  date=seq(as.Date("2004-10-01"), as.Date("2015-09-02"), by = "day"),
  CONSUMERS=runif(3989,80,120)
)

umich <- data.frame(
  observation_date=seq(as.Date("2004-10-01"), as.Date("2015-02-01"), by = "month"),
  UMCSENT=runif(125,80,100)
)

所以我希望他们两个都在同一个ggplot上。 假设我尝试以下方法:

a <- ggplot() + 
  geom_line(data=umich,aes(observation_date,UMCSENT)) +
  geom_line(data=ras,aes(x=date,y=CONSUMERS))
a

我最终得到了这个错误:

Error: Invalid input: time_trans works with objects of class POSIXct only

我以为我可以添加这样的参数,但我得到同样的错误:

a <- ggplot() + 
  geom_line(data=umich,aes(observation_date,UMCSENT)) +
  geom_line(data=ras,aes(x=date,y=CONSUMERS)) +
  scale_x_date(format = "%b-%Y")
a

总而言之,我尝试在同一ggplot上绘制月度和每日时间序列数据。

1 个答案:

答案 0 :(得分:1)

不确定问题出在哪里。使用您的数据,这就是我得到的。

library(ggplot2)
library(scales)

ras <- data.frame(
  date=seq(as.Date("2004-10-01"), as.Date("2015-09-02"), by = "day"),
  CONSUMERS=runif(3989,80,120)
)

umich <- data.frame(
  observation_date=seq(as.Date("2004-10-01"), as.Date("2015-02-01"), by = "month"),
  UMCSENT=runif(125,80,100)
)

a <- ggplot() +
  geom_line(data=ras,aes(x=date,y=CONSUMERS)) +
  geom_line(data=umich,aes(observation_date,UMCSENT), color="red") +
  scale_x_date(labels=date_format('%b-%Y'))
a

enter image description here