title: Creating ggplot2 x-axis month labels with just first letter of each month
body: <p>I know that using <code>scale_x_date(date_labels="%b"...)</code> creates tick labels containing the first three letters in each month. Is there any way to just include the first letter of each month? So instead of <code>"Jan Feb March..."</code>, the labels would be <code>"J F M..."</code>.</p>
  
  <p>Here's an example: The month labels overlap, so I was hoping to be able to change the labels to just the first letter.</p>
  
  <pre><code>library(lubridate)
  library(ggplot2)
  
  
  set.seed(2)
  df = data.frame(Date=seq(as.Date("2010-01-01"),as.Date("2015-12-31p
                                                     "), by="1 day"))
  df$value = cumsum(rnorm(nrow(df)))
  
  
  p = ggplot(df, aes(Date, value)) +
    geom_vline(xintercept=as.numeric(df$Date[yday(df$Date)==1]), colour="grey60") +
    geom_line() +
    scale_x_continuous(labels = year_labels &lt;- rep(c('J','F','M','A','M','J','J','A','S','O','N','D'),5)) +
    theme_bw() +
    theme(panel.grid.minor.x = element_blank()) +
    labs(x="")
  p
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/gEbN1.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/gEbN1.png" alt="enter image description here"></a></p>
  
  <p>I tried to change the line <code>scale_x_date(date_labels="%b", date_breaks="month", expand=c(0,0))</code> to <code>scale_x_continuous(labels = year_labels &lt;- rep(c('J','F','M','A','M','J','J','A','S','O','N','D'),5))</code></p>
  
  <p>but this produced the below error </p>
  
  <blockquote>
    <p>Error in as.Date.numeric(value) : 'origin' must be supplied</p>
  </blockquote>