使用plot_grid()并排展示ggplot图形时如何保持原始宽高比
解决ggplot并排图形垂直拉伸的问题
要保持单个ggplot图形的原始宽高比,避免plot_grid()组合后垂直拉伸,可从以下几个方向调整:
1. 给单个图形设置固定宽高比
在每个ggplot对象的theme()中添加aspect.ratio参数,指定你想要的宽高比(数值可根据单独绘制时的比例调整):
values1.graph <- ggplot(data = values1.df) + geom_histogram(mapping = aes(x = values1, y = after_stat(density)), fill="steelblue", colour="black", binwidth = 1) + ggtitle("Hist .vs. Norm 1") + stat_function(fun = dnorm, args = with(values1.df, c(mean = mean(values1), sd = sd(values1)))) + theme(aspect.ratio = 1.2) # 固定宽高比 values2.graph <- ggplot(data = values2.df) + geom_histogram(mapping = aes(x = values2, y = after_stat(density)), fill="steelblue", colour="black", binwidth = 1) + ggtitle("Hist .vs. Norm 2") + stat_function(fun = dnorm, args = with(values2.df, c(mean = mean(values2), sd = sd(values2)))) + theme(aspect.ratio = 1.2) plot_grid(values1.graph, values2.graph, labels = NULL)
每个图形会严格遵循设定的宽高比,组合后不会被拉伸变形。
2. 在plot_grid中控制整体宽高比
使用plot_grid()的aspect_ratio参数,直接指定组合图的整体宽高比,强制图形保持比例:
plot_grid(values1.graph, values2.graph, labels = NULL, aspect_ratio = 2)
参数值可按需调整,比如两个图并排时设为2(宽是高的2倍),能匹配单个图的常规比例。
3. 调整Markdown代码块的绘图尺寸
在R Markdown的代码块开头设置fig.width和fig.height,直接控制输出图形的整体尺寸,间接维持宽高比:
```{r, fig.width=8, fig.height=4} plot_grid(values1.graph, values2.graph, labels = NULL)
这里`fig.width=8`和`fig.height=4`的比例为2:1,对应两个图并排的整体尺寸,你可以根据单个图的原始宽高比调整数值(比如单个图宽高比为1.5,可设`fig.width=6, fig.height=4`)。 ## 4. 换用patchwork包(可选) patchwork包对图形布局的比例控制更友好,默认会保留单个图形的宽高比: ```r # 先安装包:install.packages("patchwork") library(patchwork) # 直接用+号组合图形 values1.graph + values2.graph # 如需调整布局,可添加plot_layout values1.graph + values2.graph + plot_layout(ncol = 2, widths = c(1, 1))
内容的提问来源于stack exchange,提问作者Kaikus
相关产品推荐
相关产品推荐

