我试图使用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
上绘制月度和每日时间序列数据。
答案 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