title: Consistently center ggplot title across PANEL not PLOT
body: <p>The default alignment is for a ggplot title to be left-aligned to the plot.background element. Others have noted that you can use <code>plot.title = element_text(hjust = 0.5)</code> to center the title.</p>
  
  <ul>
  <li><a href="https://stackoverflow.com/questions/46287086/how-to-center-ggplot-plot-title">How to center ggplot plot title</a></li>
  <li><a href="https://stackoverflow.com/questions/40675778/center-plot-title-in-ggplot2?noredirect=1&amp;lq=1">Center Plot title in ggplot2</a></li>
  </ul>
  
  <p>However, I want to center the title across the entire panel as oppose to just the plot. I have done this in the past by modifying the <code>hjust</code> to push the title so that it appears centered, but value of <code>hjust</code> is dependent on the length of the title which makes it really tedious to set when I'm batch-producing graphs.</p>
  
  <p>Is it possible to consistently set the title elements of a ggplot to be centered across the panel.background?</p>
  
  
  
  <pre class="lang-r prettyprint-override"><code>library(reprex)
  library(tidyverse)
  data(mtcars)
  
  mtcars %&gt;% 
    rownames_to_column(var = "model") %&gt;% 
    top_n(8,wt) %&gt;% 
    ggplot(aes(x =model, y = wt))+
    geom_col()+
    coord_flip()+
    labs(title="This title is left-aligned to the plot")
  </code></pre>
  
  <p><img src="https://i.imgur.com/YBA2QfA.png" alt=""></p>
  
  <pre class="lang-r prettyprint-override"><code>mtcars %&gt;% 
    rownames_to_column(var = "model") %&gt;% 
    top_n(8,wt) %&gt;% 
    ggplot(aes(x =model, y = wt))+
    geom_col()+
    coord_flip()+
    labs(title="This title is center-aligned to the plot width.")+
    theme(plot.title = element_text(hjust = 0.5))
  </code></pre>
  
  <p><img src="https://i.imgur.com/vIGtvY4.png" alt=""></p>
  
  <pre class="lang-r prettyprint-override"><code>mtcars %&gt;% 
    rownames_to_column(var = "model") %&gt;% 
    top_n(8,wt) %&gt;% 
    ggplot(aes(x =model, y = wt))+
    geom_col()+
    coord_flip()+
    labs(title="Short title, still works")+
    theme(plot.title = element_text(hjust = 0.5))
  </code></pre>
  
  <p><img src="https://i.imgur.com/dV3aAMl.png" alt=""></p>
  
  <pre class="lang-r prettyprint-override"><code>mtcars %&gt;% 
    rownames_to_column(var = "model") %&gt;% 
    top_n(8,wt) %&gt;% 
    ggplot(aes(x =model, y = wt))+
    geom_col()+
    coord_flip()+
    labs(title="This title is roughly center-aligned to panel")+ 
    theme(plot.title = element_text(hjust = 0.37)) # I know I can adjust this, but it would require a manual fix each time
  </code></pre>
  
  <p><img src="https://i.imgur.com/Hb5WgpP.png" alt=""></p>
  
  <h1>Suggestion by @user20650</h1>
  
  <pre class="lang-r prettyprint-override"><code>p &lt;- mtcars %&gt;% 
    rownames_to_column(var = "model") %&gt;% 
    top_n(8,wt) %&gt;% 
    ggplot(aes(x =model, y = wt))+
    geom_col()+
    coord_flip()+
    #labs(title="Short title, still works")+
    theme(plot.title = element_text(hjust = 0.5)) 
  
  gridExtra::grid.arrange( top=grid::textGrob("This title is center-aligned to panel"),p  )
  </code></pre>
  
  <p><img src="https://i.imgur.com/wQdlr7B.png" alt=""></p>
  
  <p><sup>Created on 2018-09-24 by the <a href="https://reprex.tidyverse.org" rel="noreferrer">reprex package</a> (v0.2.1)</sup></p>