R: ggplot2, can I set the plot title to wrap around and shrink the text to fit the plot?

John   picture John · Apr 13, 2010 · Viewed 24.3k times · Source
library(ggplot2)

my_title = "This is a really long title of a plot that I want to nicely wrap \n and fit onto the plot without having to manually add the backslash n, but at the moment it does not"

r <- ggplot(data = cars, aes(x = speed, y = dist))
r + geom_smooth() + #(left) 
opts(title = my_title)

can I set the plot title to wrap around and shrink the text to fit the plot?

Answer

Richie Cotton picture Richie Cotton · Oct 14, 2010

You have to manually choose the number of characters to wrap at, but the combination of strwrap and paste will do what you want.

wrapper <- function(x, ...) 
{
  paste(strwrap(x, ...), collapse = "\n")
}

my_title <- "This is a really long title of a plot that I want to nicely wrap and fit onto the plot without having to manually add the backslash n, but at the moment it does not"
r + 
  geom_smooth() + 
  ggtitle(wrapper(my_title, width = 20))