Как поместить заголовок main в горизонтальный центр всего окна графика? [дубликат]
На этот вопрос уже есть ответ здесь:
Я делаю горизонтальные линейчатые графики с помощью ggplot2. Я хотел бы поместить основное название участка над фактической областью построения, как обычно, но расположить его горизонтально по всей ширине окна участка. Основной заголовок по умолчанию центрируется по горизонтали на ширину фактической области построения графика (со столбиками и сеткой).
Заголовок можно переместить по горизонтали, настроив значения hjust в
theme(plot.title = element_text(hjust=0.5))
Но это, кажется, не очень хорошо работает с несколькими строками текста заголовка.
Есть ли способ переместить главный заголовок в горизонтальный центр всего окна графика?
Пример:
factor<-c("short label 1", "short label 2", "longer label requires quite a lot of space", "short label 3", "short label 4")
freq<-c(16,15,25,28,17)
data<-data.frame(factor,freq)
ggplot(data, aes(x=factor, y = freq))
+ geom_bar(stat="identity", width=0.5)
+ coord_flip()
+ labs(title = "Rather long title for the plot, requires quite a lot of space")
+ theme_grey(base_size = 15)
+ theme(text = element_text(family = "serif"), axis.text.x = element_text(size = 15, colour = "black", vjust=1), axis.text.y = element_text(size = 16, colour = "black", hjust=1), plot.title = element_text(vjust=1))
1 ответ:
Как насчет этого (используя
gridextra):require(gridExtra) factor<-c("short label 1", "short label 2", "longer label requires quite a lot of space", "short label 3", "short label 4") freq<-c(16,15,25,28,17) data<-data.frame(factor,freq) g.plot<-ggplot(data, aes(x=factor, y = freq)) + geom_bar(stat="identity", width=0.5) + coord_flip() + theme_grey(base_size = 15) + theme(text = element_text(family = "serif"), axis.text.x = element_text(size = 15, colour = "black", vjust=1), axis.text.y = element_text(size = 16, colour = "black", hjust=1), plot.title = element_text(vjust=1)) g.t<-textGrob(label="Rather long title for the plot, requires quite a lot of space",just=c("center","center")) grid.arrange(g.t,g.plot,ncol=1,heights=c(1,15))
EDIT - согласно комментарию от @Baptise, вы также можете использовать:
grid.arrange(g.plot,main="\nRather long title for the plot, requires quite a lot of space")Или:
grid.arrange(g.plot,main=g.t)

Comments