在ggplot2中用年份注释第一个月

Sac*_*amp 9 r ggplot2

假设我有这样的情节:

DF <- data.frame(date=Sys.Date() - (-100):100, y=rnorm(201))
library("ggplot2")
library(scales)
ggplot(DF, aes(x=date, y=y)) +
 geom_point() +
 scale_x_date(breaks = "1 month", minor_breaks = "1 week", labels=date_format("%b"))
Run Code Online (Sandbox Code Playgroud)

在这里,我想在每个月包括主要行和标签,每周包括次要行.这样做效果很好,但现在我想将缩写月份的年份包括在内,但仅限于该年度的第一个月.因此,标签应该阅读sep 2014. okt,nov,dec,jan 2015,feb,mrt ....

这可能吗?

Jam*_*mes 13

您可以使用自定义日期格式化程序来删除重复的年份:

my_date_format <- function()
{
   function(x)
   {
       m <- format(x,"%b")
       y <- format(x,"%Y")
       ifelse(duplicated(y),m,paste(m,y))
   }
}

ggplot(DF, aes(x=date, y=y)) +
 geom_point() +
 scale_x_date(breaks = "1 month", minor_breaks = "1 week", labels=my_date_format())
Run Code Online (Sandbox Code Playgroud)

自定义日期图