我使用 ggplot 和 plot_layout 創建了一個包含許多元素的圖。我想添加常見的 x 和 y 軸。我想使用 textGrob 與我以這種方式創建的其他地塊保持共同的外觀。
MWE
library(patchwork)
library(ggplot2)
library(grid)
library(gridExtra)
p1 <- ggplot(mtcars)
geom_point(aes(mpg, disp, color = mpg))
ggtitle('Plot 1')
p2 <- ggplot(mtcars)
geom_boxplot(aes(gear, disp, group = gear))
ggtitle('Plot 2')
p3 <- ggplot(mtcars)
geom_point(aes(hp, wt, colour = mpg))
ggtitle('Plot 3')
design <- "
1111
223#
"
myplt <- (p1 p2 p3 plot_layout(design=design, guides = "collect") &
theme(legend.position = 'right',
legend.direction = 'vertical'))
y.grob <- textGrob("My Y label",
gp=gpar(fontface="bold", fontsize=15), rot=90)
x.grob <- textGrob("My X label",
gp=gpar(fontface="bold", fontsize=15))
grid.arrange(arrangeGrob(myplt, left = y.grob, bottom = x.grob))
以上對于我使用 plot_grid 排列的圖(即添加公共標簽)效果很好。但是,通過上面的方法,我得到一個帶有正確標簽的空白圖,或者 MWE 位于正確標簽上方,但只有圖 3。
我也嘗試添加
myplt
grid::grid.draw(grid::textGrob(y.grob))
grid::grid.draw(grid::textGrob(x.grob))
因為這個答案,但這只是放在text[GRID text 26826]我的情節中間。
我確實設法讓他們的其他想法發揮作用,但間距太可怕了,我無法讓字體細節與我對其他情節的了解相匹配,因此更愿意使用已經創建的 textGrobs 找到解決方案。
編輯:設計有一個額外的空白行,我洗掉了
uj5u.com熱心網友回復:
要grid.arrange使用補丁,您必須先使用patchwork::patchworkGrob. 此外,不需要grid.arrange(arrangeGrob(...)). 只需使用grid.arrange:
grid.arrange(patchworkGrob(myplt), left = y.grob, bottom = x.grob)

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/483772.html
