在ggplot2中使用多个数据集的geom_ribbon:as.POSIXct中的错误

时间:2019-06-11 20:30:02

标签: r date ggplot2 posixlt

我正在ggplot2中使用多个数据集来创建事件发生的时间序列。计划是绘制两个数据集随时间的平均值线(平均值为平均发生日期),并使用geom_ribbon描绘平均值上方和下方+1和-1标准偏差之间的范围(列在“ sdv_pos”列中)和“ sdv_neg”分别代表+1和-1)。

我能够绘制两条中线。但是,当我插入geom_ribbon时,出现以下错误:“ as.POSIXct.numeric(value)中的错误:必须提供'origin'”。我尝试使用带原点的as.POSIXct()转换geom_ribbon()行中使用的列,但是没有用。我只能通过geom_ribbon()而不是geom_line()来获得此错误

这是两个数据集: 数据1:

   sdv_pos   stv_neg   year data1_mean 
 1976-03-20 1976-03-14 1997 1976-03-17 
 1976-02-18 1976-01-18 1998 1976-02-03 
 1976-02-12 1976-01-06 1999 1976-01-24 
 1976-03-02 1976-01-07 2000 1976-02-04 
 1976-01-10 1976-01-10 2001 1976-01-10 
 1976-04-21 1976-02-19 2002 1976-03-21 1

数据2:

   sdv_pos    sdv_neg  year data2_mean
 1976-04-24 1976-03-10 1997 1976-04-02
 1976-04-21 1976-01-27 1998 1976-03-10
 1976-04-21 1976-01-20 1999 1976-03-07
 1976-03-23 1976-01-04 2000 1976-02-12
 1976-05-05 1976-02-08 2001 1976-03-23
 1976-05-01 1976-01-29 2002 1976-03-16

这是我正在为此使用的代码。请注意,当我删除geom_ribbon时,绘图有效。但是,当我包含geom_ribbon时,我得到了错误。


graph1<- ggplot()+
  geom_line(data = Data1, aes(x = year, y = data2_mean), color = "blue")+
  geom_ribbon(data = Data1, aes(x=data2_mean, ymax=sdv_pos, ymin=sdv_neg), fill="pink", alpha=.5)+
  geom_line(data = Data2, aes(x = year, y=data2_mean), color = "red")+
  geom_ribbon(data = Data2, aes(x=data2_mean, ymax=sdv_pos, ymin=sdv_neg), fill="yellow", alpha=.5)

请注意,x轴的年份和数据值的年份不相同。我使用1976是为了将平均线保持在相同的日期/月份,否则y轴将涵盖研究中的所有年份

1 个答案:

答案 0 :(得分:0)

我通过将命令更改为

找到了答案
geom_ribbon(data = Data1, aes(x=data2_mean, ymax=sdv_pos, ymin=sdv_neg), fill="pink", alpha=.5)+

区别是x值是多少。我以为我必须将均值作为功能区的中心线,但是它的作用仅仅是在两条线(sdv_pos,sdv_neg)之间的阴影中,并且需要x轴作为x轴来对区域进行阴影处理。

似乎很明显,但我想在这里发布答案,以防有人遇到相同的问题