2017-01-10 2 views
2

У меня есть панель с 5 сюжетами и одна общая легенда, которую я хотел бы разместить в (2 строки, 3 столбца) -grid. Нижнюю правую панель следует использовать для обозначения легенды.Звёздная легенда в пустой панели с cowplot/ggplot2

library(ggplot2) 
library(cowplot) 
df <-data.frame(a=seq(1,20),b=seq(1,20), c=as.factor(c(rep("A", 10),rep("B",10)))) 
O <- ggplot(df, aes(x = a, y = b)) + geom_point(aes(col=c)) 
legend <- get_legend(O) 

A <- ggplot(df, aes(x = a, y = b)) + geom_point(aes(col=c), show.legend = F) 
B <- ggplot(df, aes(x = c, y = b)) + geom_boxplot(aes(col=c), show.legend = F) 
C <- ggplot(df, aes(x = a, y = b)) + geom_line(aes(group=c, col=c), show.legend=F) 
D <- ggplot(df, aes(a)) + geom_histogram() 



lol <- plot_grid(A, B, C, 
       D, A, NULL, ncol=3, nrow=2, 
       align="hv", rel_widths = c(1, 1, 1, 1, 1, 1), 
       labels = c('A', 'B', 'C', 'D', 'E', '')) 

Это следует из учебника дается здесь: https://cran.r-project.org/web/packages/cowplot/vignettes/shared_legends.html

Теперь вопрос, я переделал с последней командой участка в виньетка:

lol + draw_grob(legend, 2/3.3, 0, .3/3.3, 1) 

, но я не могу понять логику (видимой?) системы координат, заданной в аргументах draw_grob. Может ли кто-нибудь уточнить, как перемещаться по легенде на пустое место?

Обратите внимание, что я не могу использовать объект 'legend' в 'plot_grid', потому что он не позволяет выравниванию работать.

ответ

1

Вы должны увидеть его в виде прямоугольника с точкой (x, y) в нижнем левом углу, и в верхнем правом углу на (x + ширина , у + height`).

Таким образом, в данном случае:

lol + draw_grob(legend, 2/3, 0, 1/3, 0.5) 

enter image description here

Обратите внимание, что вы можете увеличить y немного поставить его вровень с фактической площадью черчения других участков, а не весь холст ,

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