首页 文章

R和ggplot-将x轴更改为Date可消除位置闪避

提问于
浏览
7

我一直在使用ggplot创建绘图,我总是喜欢水平偏移我的数据点,因此误差条不会重叠 . 我发现当我使用日期数据作为我的x轴时,我失去了偏移数据点的能力 .

DF=data.frame(Date=c("2006-09-01", "2007-09-01", "2008-09-01" ,"2009-09-01", "2010-01-01" ,"2011-01-01"),Count=c(1,2,3,4,5,6,2,4,6,8,10,12),Type=c('A','A','A','A','A','A','B','B','B','B','B','B'))

如果我使用像这样的ggplot绘制上面的数据框,则这些点是偏移的

dodge=position_dodge(.5)
ggplot(data=DF,aes(x=Date,y=Count,group=Type))+geom_point(position=dodge)

但是,如果我将日期数据指定为实际日期

DF$Date=as.Date(DF$Date)
ggplot(data=DF,aes(x=Date,y=Count,group=Type))+geom_point(position=dodge)

这些点不再被抵消,即使我指定它们

我过去通过将日期数据仅限于“年”并将其视为数字来避免此问题 . 但是现在我需要包含月份信息(我包括我的约会日期,因为“as.Date如果我不包含它会有点时髦) .

所以任何人都可以告诉我,如果有一种方法我可以使用ggplot绘制时间序列,这将允许我偏移我的数据点和误差条 .

1 回答

  • 9

    实际上这些分数略有躲过 .

    您需要记住,一年之间的间隔是365天 . position_dodge(0.5) 将点移动(半天)/ 2 . 因此,该位置移动一年间隔0.5 / 2/365 .

    如果你选择`position_dodge(0.5 * 365),那么你将得到预期的情节:

    DF <- data.frame(
      expand.grid(Date=c("2006-09-01", "2007-09-01", "2008-09-01" ,"2009-09-01"),
         Type = c("A", "B")),
      Count = 1:4)
    DF$Date2 <- as.Date(DF$Date)
    
    ggplot(data=DF,aes(x=Date2,y=Count,group=Type))+ geom_point(position = position_dodge(365*0.5))
    

    enter image description here

相关问题