ggplot2:如何更改刻度线/网格线的位置以与数据中的日期对齐

问题描述

我试图在x轴是日期的地方绘制一些数据。请参阅下面的示例数据。

Test.Data <- data.frame(weekBeginDate = c("2017-10-21","2017-10-28","2017-11-04","2017-11-11","2017-11-18","2017-11-25","2017-12-02","2017-12-09","2017-12-16","2017-12-23","2017-12-30"),Temperature = sample(1:11))

当我使用以下代码使用ggplot绘制此数据时,将获得以下输出

Test.Data$weekBeginDate <- as.Date(Test.Data$weekBeginDate)
Test.Data.plot <- ggplot(Test.Data,aes(x = weekBeginDate,y = WeeklyAvg)) + 
    geom_line(aes(y = Temperature),size=1.25) + 
    labs(y = "Air Temperature [°C]",x = "Date") +
    scale_x_date(date_breaks = "4 weeks",date_minor_breaks = "weeks") +
    theme(axis.text.x = element_text(angle = 45,hjust = 1))

ggplot graph showing time series of sample temperature data

如您所见,图表上的刻度线或网格线与数据中使用的日期不一致(例如,图表上标记的日期为2017-11-13和2017-12-11 ,而我希望它们是2017年11月11日和2017年12月9日)。有没有办法更改网格线的显示日期?

非常感谢!

解决方法

breaks中的scale_x_date设置为所需的x值,在这种情况下,这是Test.Data$weekBeginDate中日期的整个向量:

ggplot(Test.Data,aes(x = weekBeginDate,y = WeeklyAvg)) + 
    geom_line(aes(y = Temperature),size=1.25) + 
    labs(y = "Air Temperature [°C]",x = "Date") +
    scale_x_date(breaks = Test.Data$weekBeginDate) +
    theme(axis.text.x = element_text(angle = 45,hjust = 1))

enter image description here