Добавление динамических субтитров с помощью ggplot
Я пытаюсь использовать ggplot для добавления субтитров. Аналогичный вопрос задавали здесь: Как добавить подзаголовок ggplot2 с разными размерами и цветом?, и ответ был следующим:
p <- p + ggtitle(expression(atop(paste('TITLE'), atop(italic(paste('SUBTITLE')), ""))))
Однако слова 'TITLE'
и 'SUBTITLE'
должны быть жестко запрограммированы, представляя проблему масштабируемости и автоматизации при работе с тысячами графиков.
Это не работает:
plot.title = 'TITLE'
plot.subtitle = 'SUBTITLE'
p <- p + ggtitle(expression(atop(paste(plot.title), atop(italic(paste(plot.subtitle)), ""))))
Я думаю, вопрос о том, как правильно добавлять динамические субтитры, используя эту идею, сводится к: возможно ли использовать переменные символов внутри выражения и поверх?
Ответы
Ответ 1
Вы должны использовать функцию bquote()
вместо expression()
для использования титров, которые хранятся как переменные. И имена переменных должны быть помещены внутри .()
plot.title = 'TITLE'
plot.subtitle = 'SUBTITLE'
ggplot(mtcars,aes(disp,mpg))+geom_point()+
ggtitle(bquote(atop(.(plot.title), atop(italic(.(plot.subtitle)), ""))))
![enter image description here]()
UPDATE - версия ggplot2 2.2.1
Последняя версия ggplot2 теперь может создавать субтитры напрямую, поэтому вам не нужно использовать bquote()
и expression()
. Результат получается с аргументом subtitle =
функции labs()
.
ggplot(mtcars,aes(disp,mpg))+geom_point()+
labs(title = plot.title,subtitle = plot.subtitle) +
theme(plot.subtitle = element_text(face = "italic"))