如何在 ggplot2 中移动 x 轴的刻度(以年为单位的日期)?

How to move the ticks of x axis (date in years) in ggplot2?

我想检查 df data.frame 中变量 a 每年的箱线图。我使用下面的代码创建了 data.frame

set.seed(123)
date <- as.Date(seq(as.Date("1990-01-01"), as.Date("2015-12-31"), by = 1), format="%Y-%m-%d")
a <- runif(9496, 3000, 120000)
df <- data.frame(date, a)
df[c(1:151,9313:9496), 2]<-NA

并使用此代码

library(ggplot2)
ggplot(df, aes(x=date, y=a, group=years(date)))+
  geom_boxplot()+
  scale_x_date(breaks = date_breaks("1 year"),
               labels = date_format("%Y"))

我得到了这个数字

x 轴上的年份显示在箱线图前后。如何将 x 轴的刻度和 axis.text 与箱线图对齐?

您可以将日期分隔符设置在每年的中间:

  scale_x_date(breaks = seq(as.Date("1990-06-30"), as.Date("2015-06-30"), by="1 year"),
               labels = date_format("%Y"))