我想在R中使用patchwork包来安排四个图:

library(ggplot2)
library(patchwork)

d1 <- runif(500)
d2 <- rep(c("Treatment","Control"),each=250)
d3 <- rbeta(500,shape1=100,shape2=3)
d4 <- d3 + rnorm(500,mean=0,sd=0.1)
plotData <- data.frame(d1,d2,d3,d4)

p1 <- ggplot(data=plotData) + geom_point(aes(x=d3, y=d4))
p2 <- ggplot(data=plotData) + geom_boxplot(aes(x=d2,y=d1,fill=d2))+
theme(legend.position="none")
p3 <- ggplot(data=plotData) +
  geom_histogram(aes(x=d1, color=I("black"),fill=I("orchid")))
p4 <- ggplot(data=plotData) +
  geom_histogram(aes(x=d3, color=I("black"),fill=I("goldenrod")))

# Arrange plots
{p1 + p2 + plot_layout(ncol=2, widths = c(1, 2))}/
     {p3 + p4 + plot_layout(ncol = 2, widths = c(2, 1))}/
     {p3 +      plot_layout(ncol = 2, widths = c(2, 1))}/
     {p4 +      plot_layout(ncol = 2, widths = c(2, 1))}

Here is the plot: enter image description here

对于合成图的第2行和第3行,我始终将widths参数指定为c(2,1).然而,该图显示第2行和第3行中的左图在占用宽度上不同.我想问我应该如何修改代码,使第2-4行的左侧面板宽度相同.

推荐答案

根据我的经验,对于更复杂的布局和补丁,值得考虑通过plot_layoutwrap_plotsdesign=参数指定布局,这似乎对您的情况很有效:

library(patchwork)

design <-
"
ABB
CCD
EE#
FF#
"

list(p1, p2, p3, p4, p3, p4) |>
  wrap_plots(design = design)

enter image description here

R相关问答推荐

如何提高以键ID为列的表中键查找的效率?

R -模运算后的加法

更改Heatmap Annotation对象的名称

从gtsummary包中使用tBL_strata()和tBL_summary()时删除变量标签

基于不同组的列的相关性

如何直接从Fortran到R的数组大小?

用约翰逊分布进行均值比较

根据1个变量绘制 colored颜色 发散的 map ,由另一个变量绘制饱和度,ggplot2不工作

在GG图中绘制射线的自动程序

更改STAT_VALLES/STAT_PEAKS中的箭头线宽/大小

R如何计算现有行的总和以添加新的数据行

查找所有站点的最小值

我如何go 掉盒子图底部的数字?

层次树图的数据树

R-使用stri_trans_General()将其音译为德语字母

隐藏基于 case 总数的值

使用&Fill&Quot;在gglot中创建 colored颜色 渐变

将CSV转换为R中的自定义JSON格式

把代码写成dplyr中的group_by/摘要更简洁吗?

是什么打破了此Quarto仪表板中的工具提示?