簡體   English   中英

使用 cowplot/ggplot2 在空面板中繪制圖例

[英]Plot legend in an empty panel with cowplot/ggplot2

我有一個包含 5 個圖和一個共享圖例的面板,我想將其排列在(2 行,3 列)網格中。 右下面板應該用於圖例。

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 參數中給出的(明顯的?)坐標系的邏輯。 有人可以澄清如何將圖例導航到空白處嗎?

請注意,我不能在“plot_grid”中使用對象“legend”,因為它會阻止對齊工作。

您需要將其視為一個矩形,點 ( x , y ) 為左下角,右上角為 ( x + width , y + height`)。

所以,在這種情況下:

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

在此處輸入圖片說明

請注意,您可能需要稍微增加y以使其與其他繪圖的實際繪圖區域而不是整個畫布保持水平。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM