簡體   English   中英

R和ggplot-將x軸更改為Date可消除位置閃避

[英]R and ggplot- Changing x axis to Date removes position dodge

我一直在使用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繪制時間序列,這將允許我偏移我的數據點和誤差條。

實際上這些分數略有躲過。

您需要記住,一年之間的間隔是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))

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM