我正在使用以下数据集绘制数据:
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"))
我想要实现的是,不要在x轴上使用日期标签,而应使用来自dayRelative
- 列的数据。这意味着对于点应该使用time
- 列,但是,x轴应该使用dayRelative
列中相应位置的数据。结果2月19日应该被0,2月20日替换为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)