使用patchwork排列多图时如何将图例纳入绘图尺寸计算
解决方案
你可以使用patchwork提供的wrap_elements()函数将带图例的绘图包装为独立布局单元,包装后整个绘图(包含图例)会被视为单一区块参与尺寸计算,不需要修改全局图例合并规则。
修改后可直接运行的代码
library(ggplot2) library(patchwork) library(dplyr) # 补充管道符依赖 plot1 <- mpg %>% ggplot() plot2 <- mpg %>% ggplot() plot3 <- mpg %>% ggplot(aes(cyl, displ)) + geom_point(aes(colour = manufacturer)) + guides(colour=guide_legend(ncol=4)) # 用wrap_elements包装plot3,使其包含图例参与布局计算 (plot1 + plot2) / wrap_elements(plot3)
原理解释
- 默认情况下patchwork会自动提取所有子图的图例,放在全局的布局空间中单独分配尺寸,不会计入对应子图的宽高计算
wrap_elements()会将传入的ggplot对象完整包裹为一个独立的布局组件,图例作为图的一部分被保留在组件内部,布局时会按照完整组件的总尺寸(绘图区+图例区)进行空间分配,完全匹配需求
内容的提问来源于stack exchange,提问作者Nautica
相关产品推荐
相关产品推荐

