R: ggplot2, я могу установить заголовок графика, чтобы обернуть вокруг него и сжать текст, чтобы он соответствовал графику? - PullRequest
25 голосов
/ 13 апреля 2010
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)

можно ли задать заголовок графика, чтобы обернуть вокруг него, и сжать текст, чтобы он соответствовал графику?

Ответы [ 2 ]

40 голосов
/ 14 октября 2010

Вы должны вручную выбрать количество символов для переноса, но комбинация strwrap и paste сделает то, что вы хотите.

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))
8 голосов
/ 14 апреля 2010

Я не думаю, что в ggplot2 есть опция переноса текста (я всегда просто вставляю \ n вручную). Однако вы можете уменьшить размер текста заголовка, изменив код следующим образом:

title.size<-10
r + geom_smooth() + opts(title = my_title,plot.title=theme_text(size=title.size))

На самом деле, вы все аспекты текста с помощью функции theme_text.

...