Как настроить поля и метки с помощью plot_grid?

Я хотел бы, чтобы заголовок не был обрезан, а метки осей были удалены из этой диаграммы, которую я создал с помощью plot_grid из cowplot.введите здесь описание изображения

Вот мой код

    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

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


person FTF    schedule 25.12.2015    source источник


Ответы (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)

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

введите здесь описание изображения

person Mike Wise    schedule 26.12.2015
comment
Мне пришлось добавить библиотеку (gtable), чтобы вызвать grid.draw, а затем я смог рисовать другие темы из ggthemes — так что это было приятно. Но ваше решение не удалило галочки на ковриках по осям x и y. - person FTF; 26.12.2015
comment
Так это нормальное решение? Не совсем уверен, что такое половой клещ... Впервые слышу о них. Я только что исправил library(gtable) - person Mike Wise; 26.12.2015
comment
Мы приложили немало усилий для того, чтобы это положительно оценили. - person Mike Wise; 26.12.2015
comment
Использован текст аннотации, так как он расположен по центру. - person Mike Wise; 26.12.2015
comment
Возможно, есть лучший способ избавиться от фоновой сетки, но сейчас мне нужно идти в кино :). Пожалуйста, отметьте правильно, если вам это нравится. - person Mike Wise; 26.12.2015
comment
Возможно, проще подавить как галочки, так и использование текста: theme(axis.ticks=element_blank())+theme(axis.text=element_blank()) - person FTF; 26.12.2015
comment
Давайте продолжим обсуждение в чате. - person FTF; 27.12.2015
comment
Сейчас уже за полночь, я только что вернулся с просмотра «Звездных войн». Давайте попробуем еще раз завтра. Я в часовом поясе GMT+1 (Германия). - person Mike Wise; 27.12.2015

подойдет ли вам эта тренировка?

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")

введите здесь описание изображения

person MLavoie    schedule 26.12.2015
comment
Вы имеете в виду, что единственный способ изменить тему - это отдельный сюжет? Кроме того, можете ли вы объяснить, почему некоторые из ggthemes, такие как theme_economist, не работают на отдельных участках, а другие, такие как theme_wsj, работают? - person FTF; 26.12.2015
comment
Вы не упомянули тему в своем посте. некоторые темы могут не работать, но вы все равно можете сделать это вручную. мой ответ - просто альтернатива вашему вопросу. Но если вам действительно нужен сюжет с использованием коровьего сюжета, см. Ответ @Mike Wise :) - person MLavoie; 26.12.2015

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

 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)

Вот мой график Решение

person FTF    schedule 26.12.2015
comment
Ах это. Я бы назвал это фоновой сеткой. Есть ли шанс, что я могу добавить его в свое решение и получить правильное решение? Могу дать вам совет для ваших проблем :). - person Mike Wise; 26.12.2015
comment
Пожалуйста, сделайте и FWIW, если у вас есть какие-либо подсказки по центрированию заголовка с помощью ggplot2_english_first_edition.pdf, это тоже было бы круто. Действительно цените время, которое вы вложили. - person FTF; 26.12.2015
comment
Хорошо, сделал это, но не получил ссылку в формате pdf. - person Mike Wise; 26.12.2015