R语言Patchwork包绘图布局问题:右侧条形图过宽求调整方案
解决patchwork布局中右侧条形图过宽的问题
问题分析
你当前的代码错误地在右侧垂直堆叠的子布局中设置了widths参数——右侧是用/连接的上下两个元素,属于单列布局,widths在这里根本不起作用。真正需要控制的是整个页面左右两列的宽度比例。
调整后的代码方案
方案一:修改外层布局的widths参数
直接在最外层的plot_layout中设置左右列的宽度比例,去掉右侧子布局中无效的widths设置:
((fac1_trajectory_bp + coord_flip()) / p_bm + plot_layout(height = c(0.125, 1))) | (guide_area() / fac1_trajectory_bp + plot_layout(heights = c(0.125, 1))) + plot_layout(widths = c(4, 1)) # 数值可按需调整,比如3:1、5:1等,让右侧列变窄
方案二:用design参数精准布局(更直观)
如果想更清晰地控制每个图的位置,可以用wrap_plots配合design参数:
# 先提前定义翻转后的条形图 fac1_bp_flip <- fac1_trajectory_bp + coord_flip() # 设计布局模板:A占左上+左下,B占右上,C占右下 design <- " A B A C " # 组合绘图并设置尺寸 wrap_plots( A = fac1_bp_flip, B = guide_area(), C = p_bm, D = fac1_trajectory_bp, design = design, heights = c(0.125, 1), # 控制上下行高度比例 widths = c(4, 1) # 控制左右列宽度比例,让右侧列变窄 )
关键说明
widths参数要作用于包含左右两列的最外层布局,而不是右侧的单列子布局。- 调整
widths中的数值比例(比如c(4,1))可以精准控制右侧列的宽度,直到和上方条形图宽度匹配为止。
内容的提问来源于stack exchange,提问作者CAM_etal
相关产品推荐
相关产品推荐

