ggarrange:使图不包括标题,轴标题,轴标签大小相同

问题描述

我正在尝试使用单独的图和facet_grid重新创建ggarrange的样式。使用ggarrange函数的height和width参数可以使所有图的大小相同,但这包括标题,轴标题等。有没有办法使图自身的大小相同(其他试验和错误宽度是相对高度和宽度)?

示例

library(ggplot2)
library(ggpubr)

df <- data.frame(x=runif(100),y=runif(100))

p1 <- ggplot(df) + geom_point(aes(x=x,y=y)) + theme(axis.title = element_text(size=100))
p2 <- p1 + xlab(NULL)
p3 <- p1 + ylab(NULL)
p4 <- p1 + xlab(NULL) + ylab(NULL)

p <- ggarrange(p2,p4,p1,p3,nrow=2,ncol=2)

print(p)

这将生成以下图,其中右上方的图看起来比其他图大(尽管包括标题,它们的大小均相同)。

enter image description here

类似这样的事情似乎越来越接近预期的结果:

p_fixed <- ggarrange(p2,ncol=2,heights = c(1,1.3,1,1.3),widths=c(1.1,1.1,1))

enter image description here

或者,我这样做的原因是因为每个图表上的色阶都需要不同,所以如果有一种使用facet_grid方法也有帮助的话。还有一个更笼统的问题是,用单个图来复制facet_grid布局的最佳方法是什么。

解决方法

使用patchwork尝试此解决方案。在列表中设置您的图,并使用wrap_plots()函数包装成一个组合图:

library(ggplot2)
library(ggpubr)
library(patchwork)
#Data
df <- data.frame(x=runif(100),y=runif(100))
#Plots
p1 <- ggplot(df) + geom_point(aes(x=x,y=y)) + theme(axis.title = element_text(size=100))
p2 <- p1 + xlab(NULL)
p3 <- p1 + ylab(NULL)
p4 <- p1 + xlab(NULL) + ylab(NULL)
#List
List <- list(p2,p4,p1,p3)
#Plot
Plot <- wrap_plots(List,ncol = 2,nrow = 2)

将调整输出以保持相同的尺寸:

enter image description here