2015-12-25 3 views
1

Я хотел бы, чтобы заголовок не был отрублен и на нем были удалены метки оси, которые я сгенерировал с помощью plot_grid из cowplot. enter image description hereКак настроить параметры полей и меток с помощью plot_grid?

Вот мой код

data(mtcars) 
library(ggplot2) 
library(cowplot) 
mpg = ggplot() + 
geom_boxplot(aes(y = mpg,x = as.factor(cyl)),data=mtcars) + 
coord_flip() 
am=ggplot() + 
geom_boxplot(aes(y = mpg,x = as.factor(am)),data=mtcars) + 
coord_flip() 
vs=ggplot() + 
geom_boxplot(aes(y = mpg,x = as.factor(vs)),data=mtcars) + 
coord_flip() 
gear = ggplot() + 
geom_boxplot(aes(y = mpg,x = as.factor(gear)),data=mtcars) + 
coord_flip() 
p=plot_grid(mpg,am,vs,gear, labels = "Variables effecting Mileage", label_size = 14, hjust = -0.5, 
+ vjust = 0.5)+theme_grey() 
p 

Кроме того, если было бы проще создать это без cowplot, что вы предлагаете?

ответ

3

Вот cowplot только ответ. Это может быть больше того, чего вы хотите.

library(ggplot2) 
library(cowplot) 
library(gtable) 

data(mtcars) 

mpg = ggplot() + 
    geom_boxplot(aes(y = mpg,x = as.factor(cyl)),data=mtcars) + 
    coord_flip() + labs(x="",y="") 
am=ggplot() + 
    geom_boxplot(aes(y = mpg,x = as.factor(am)),data=mtcars) + 
    coord_flip()+ labs(x="",y="") 
vs=ggplot() + 
    geom_boxplot(aes(y = mpg,x = as.factor(vs)),data=mtcars) + 
    coord_flip()+ labs(x="",y="") 
gear = ggplot() + 
    geom_boxplot(aes(y = mpg,x = as.factor(gear)),data=mtcars) + 
    coord_flip()+ labs(x="",y="") 
p=plot_grid(mpg,am,vs,gear) + 
    theme_grey() + 

# Use annotation text as it is centered at the x,y point 
    annotate("text",x=0.5,y=1.04,size=7,label="Variables affecting Mileage") + 

# Add some space around the edges 
    theme(plot.margin = unit(c(1,0.5,0.5,0.5), "cm")) 


# Suppress tick marks 
p=p+scale_y_continuous(breaks=NULL)+scale_x_continuous(breaks=NULL) 

# Have to turn off clipping 
gt <- ggplot_gtable(ggplot_build(p)) 
gt$layout$clip[gt$layout$name == "panel"] <- "off" 

# need to draw it with the new clip settings 
grid.draw(gt) 

Урожайность:

enter image description here

+0

Мне пришлось добавить библиотеку (gtable), чтобы вызвать grid.draw, а затем я смог рисовать другие темы из ggthemes - так было приятно. Но ваше решение не удаляло тиски ковра по осям x и y. – FTF

+1

Так это хорошо? Не совсем уверен, что такое «ковер» ... Первый раз я слышал о них. Я просто исправил библиотеку (gtable) ' –

+0

Извините, я имел в виду отметки. – FTF

1

будет эта тренировка для вас?

library(ggplot2) 
library(gridExtra) 
a <- ggplot() + geom_boxplot(aes(y = mpg,x = as.factor(cyl)),data=mtcars) + coord_flip() + theme_grey() + theme(axis.title.x = element_blank()) 
b <- ggplot() + geom_boxplot(aes(y = mpg,x = as.factor(am)),data=mtcars) + coord_flip() + theme_grey() + theme(axis.title.x = element_blank()) 
c <- ggplot() + geom_boxplot(aes(y = mpg,x = as.factor(vs)),data=mtcars) + 
coord_flip() + theme_grey() + theme(axis.title.x = element_blank()) 
d <- ggplot() + geom_boxplot(aes(y = mpg,x = as.factor(gear)),data=mtcars) + 
coord_flip() + theme_grey() + theme(axis.title.x = element_blank()) 
grid.arrange(a, b, c, d, ncol=2, top = "Variables effecting Mileage") 

enter image description here

+0

Вы намекаете, что единственный способ изменить тему находится в пределах отдельного сюжета? Кроме того, вы можете объяснить, почему некоторые из ggthemes, такие как theme_economist, не работают внутри отдельных графиков, в то время как другие, такие как theme_wsj? – FTF

+1

Вы не упомянули тему в своем посте. некоторые из тем могут не работать, но вы можете сделать это вручную в любом случае. мой ответ - просто альтернатива вашему вопросу. Но если вам действительно нужен сюжет с использованием cowplot, см. @ Mike Wise answer :) – MLavoie

1

Спасибо Майк. Это делает работу.

data(mtcars) 
library(ggplot2) 
library(cowplot) 
library(gtable) 
mpg = ggplot() + 
geom_boxplot(aes(y = mpg,x = as.factor(cyl)),data=mtcars) + 
coord_flip() + labs(x="",y="") 
am=ggplot() + 
geom_boxplot(aes(y = mpg,x = as.factor(am)),data=mtcars) + 
coord_flip()+ labs(x="",y="") 
vs=ggplot() + 
geom_boxplot(aes(y = mpg,x = as.factor(vs)),data=mtcars) + 
coord_flip()+ labs(x="",y="") 
gear = ggplot() + 
geom_boxplot(aes(y = mpg,x = as.factor(gear)),data=mtcars) + 
coord_flip()+ labs(x="",y="") 
p=plot_grid(mpg,am,vs,gear, 
     labels = "Variables effecting Mileage", 
     label_size = 14, hjust = -1.3[![enter image description here][1]][1], vjust = -0.1)+ 
theme_grey() + 

# Add some space around the edges 
theme(plot.margin = unit(c(1,0.5,0.5,0.5), "cm")) 

# Suppress tick marks 
p=p+scale_y_continuous(breaks=NULL)+scale_x_continuous(breaks=NULL) 

# Have to turn off clipping 
gt <- ggplot_gtable(ggplot_build(p)) 
gt$layout$clip[gt$layout$name == "panel"] <- "off" 

# need to draw it with the new clip settings 
grid.draw(gt) 

Вот мой участок Solution

+1

О, это. Я бы назвал его «фоновой сеткой». Любой шанс, я могу добавить его в мое решение и получить правильный? Может дать вам совет для ваших проблем :). –

+0

Пожалуйста, сделайте это и FWIW, если у вас есть намеки на центрирование названия с помощью ggplot2_english_first_edition.pdf, это тоже будет круто. Внимательно оцените время, которое вы вложили. – FTF

+1

Хорошо, сделал это, но не получил ссылку на PDF. –

Смежные вопросы