ggplot连续x轴用变量数据标记

时间:2014-08-10 13:59:05

标签: r ggplot2 label axis

我正在使用以下数据集绘制数据:

dt1 <- data.table(
sender=c("boy", "girl", "girl", "boy", "girl", "boy"), 
type = c("run", "walk", "run", "run", "run", "walk"), 
time=c(as.POSIXct("2014-02-19 03:24:00"), as.POSIXct("2014-02-19 03:29:00"), as.POSIXct("2014-02-20 03:30:00"), as.POSIXct("2014-02-23 03:34:00"), as.POSIXct("2014-02-25 08:24:00"), as.POSIXct("2014-02-25 09:45:00")), 
dayRelative = c(0,0,1,4,6,6)) 

以下ggplot命令正常工作:

ggplot(dt1, aes(x=time, y=sender, colour=type)) +  
geom_point(size=2, position=position_jitter(width=0.2, height=0.2)) + 
scale_y_discrete(limit = c("boy", "girl"), labels= c("Boy", "Girl"))

Resulting Chart

我想要实现的是,不要在x轴上使用日期标签,而应使用来自dayRelative - 列的数据。这意味着对于点应该使用time - 列,但是,x轴应该使用dayRelative列中相应位置的数据。结果2月19日应该被0,2月20日替换为1,......

1 个答案:

答案 0 :(得分:1)

您可以scale_x_datetime()使用time作为breaks=,将dayRelative作为labels=。在dt1 $时间周围使用函数trunc()来获取没有小时和分钟的日,然后as.POSIXct让POSIXct对象在scale_x_datetime()中使用它。

ggplot(dt1, aes(x=time, y=sender, colour=type)) +  
      geom_point(size=2, position=position_jitter(width=0.2, height=0.2)) + 
      scale_y_discrete(limit = c("boy", "girl"), labels= c("Boy", "Girl"))+
      scale_x_datetime(breaks=as.POSIXct(trunc(dt1$time,"day")),labels=dt1$dayRelative)

enter image description here