我无法弄清楚如何标记x轴以对应点。 X表示4个日期,我希望月日(例如,' 8月27日')格式显示为x标签。
提前感谢您的帮助!
代码:
ggplot(day28.long,aes(x=day,y=movement))+
geom_point(aes(colour=Horse))+
geom_line(aes(colour=Horse))
数据的结构是:
str(day28.long)
'data.frame': 60 obs. of 3 variables:
$ day : Date, format: "2016-08-27" "2016-09-24" "2016-10-22" "2016-11-19" ...
$ Horse : chr "42012" "42012" "42012" "42012" ...
$ movement: int 418 291 255 123 314 270 271 141 444 471 ...
答案 0 :(得分:1)
默认情况下,ggplot2
使用scale_x_date()
或scale_y_date()
来代替Date
个班级。刻度线和网格线放置在“漂亮”的日期,例如1个 st 和15个 th 的一个月。缩放不关心数据中的特定日期。
但是,scale_*_date()
有两个参数可以自定义中断和标签。
ggplot(day28.long,aes(x=day, y=movement, colour=Horse, group = Horse)) +
geom_point() +
geom_line() +
scale_x_date(breaks = unique(day28.long$day),
date_labels = "%b %d"
)
breaks
取自day
列。
默认情况下,标签会以YYYY-mm-dd
格式显示。因此,参数date_labels = "%b %d"
告诉ggplot2
如何在轴上显示日期。
请注意,%b
是此平台当前区域设置中缩写的月份名称(请参阅?strptime
)。这就是 Okt 22 打印在图表中而不是 Oct 22 的原因。
不幸的是,OP没有为可重现的例子提供数据。所以,我不得不制作一些样本数据。
day28.long <- data.frame(
day = as.Date(rep(c("2016-08-27", "2016-09-24", "2016-10-22", "2016-11-19"), 2)),
Horse = rep(c("42012", "42013"), each = 4),
movement = as.integer(c(418, 291, 255, 123, 314, 270, 271, 141)),
stringsAsFactors = FALSE)
str(day28.long)
#'data.frame': 8 obs. of 3 variables:
# $ day : Date, format: "2016-08-27" "2016-09-24" "2016-10-22" ...
# $ Horse : chr "42012" "42012" "42012" "42012" ...
# $ movement: int 418 291 255 123 314 270 271 141