title: Increase space between legend title and labels in ggplot2
body: <p>I am trying to increase the space between legend title and labels in <code>ggplot2</code> but haven’t had any luck applying all sorts of possible solutions I could find on the web. As you can see in the reproducible example below the title text is too close to the top number. I would like to avoid the clunky solution (#6 below) of manually adding a line brake (<code>\n</code>) as this doesn’t allow to tweak the spacing size and a complete line is too much in my case.</p>
  
  <p>I need to use a <code>colourbar</code>. I am aware that <code>vjust</code> normally takes values between 0 and 1 but I am using a value of 2 below to easier detect changes.</p>
  
  <pre><code>library(reshape2)
  library(ggplot2)
  
  # Generate test data frame
  df=reshape2::melt(outer(1:4, 1:4), varnames = c("X1", "X2"))
  
  # Declare theme
  mytheme=theme_classic(base_size=15) + 
    theme(axis.title.x=element_blank(),axis.title.y=element_blank(),
          axis.text.x=element_blank(),axis.text.y=element_blank(),
          axis.ticks=element_blank()) + 
    theme(legend.position=c(0,1), legend.justification=c(0,1),
          legend.title=element_text(size="12",face = "bold"))
  
  # Plot
  p=ggplot(data=df, aes_string(x="X1", y="X2")) +
    geom_tile(aes(fill=value))+
    scale_fill_gradient(low="yellow",high="red",guide="colourbar",name="Titleggplot") +
    annotate("text",x=Inf,y=Inf,label="(a)" ,hjust=1.5, vjust=1.5, size=6) +
    mytheme
  p
  
  #*** Things I tried (building on the defaults above) that do not work
  
  # 1 - set "vjust" in theme
  mytheme=mytheme+theme(legend.title=element_text(size="12",face = "bold",vjust=2))
  p=p+mytheme
  p
  # Result: does nothing
  
  # 2 - set "legend.title.align" in theme
  mytheme=mytheme+theme(legend.title.align=4)
  p=p+mytheme
  p
  # Result: adjusts horizontal position but does not change vertical position
  
  # 3 - increase margins around title object
  mytheme=mytheme+theme(legend.title=element_text(margin=margin(0,0,20,0),size="12",face="bold"))
  p=p+mytheme
  p
  # Result: does nothing
  
  # 4 - using "guide" in scale_fill_gradient
  p=ggplot(data=df, aes_string(x="X1", y="X2")) +
    geom_tile(aes(fill=value))+
    scale_fill_gradient(low="yellow",high="red",guide=guide_colorbar(title="Titleggplot",title.vjust=2)) +
    annotate("text",x=Inf,y=Inf,label="(a)" ,hjust=1.5, vjust=1.5, size=6) +
    mytheme
  p
  # Result: does nothing
  
  # 5 - using "guides" as separate element
  p=p+guides(fill=guide_legend(title.vjust=2))
  # Restult: does nothing
  
  # 6 - I could manually add a line break (\n) to the title
  p=ggplot(data=df, aes_string(x="X1", y="X2")) +
    geom_tile(aes(fill=value))+
    scale_fill_gradient(low="yellow",high="red",guide="colourbar",name="Titleggplot\n") +
    annotate("text",x=Inf,y=Inf,label="(a)" ,hjust=1.5, vjust=1.5, size=6) +
    mytheme
  p
  # Result: increases the space but I can't smoothly adjust the spacing and an entire blank line is in my case too much.
  </code></pre>