Rmarkdown knitr-HTML 中与 gridExtra 一致的数字大小
Consistent figures size with gridExtra in Rmarkdown knitr-HTML
我正在使用 gridExtra
包 grid.arrange()
函数绘制由 ggplot2
生成的 4 个图形。整体是 html-使用 knitr
包渲染,使用 RMarkdown
在 RStudio 上工作。
简而言之:
g1 <- ggplot(); g2 <- ggplot(); g3 <- ggplot(); g4 <- ggplot()
grid.arrange(g1,g2,g3,g4,ncol=2,nrow=2)
在 RMarkdown/knitr
中,我使用了这些选项:
output:
html_document:
keep_md: true
```r,figures, fig.align='center',fig.width=12,fig.height=10```
问题:4个图是按需要绘制的,但大小明显不成比例。
经过测试的解决方案:在此question中提出但没有取得多大成功。
编辑:现在提供带有html输出屏幕截图的可重现示例。
```{r mtcars plots, fig.align='center',fig.width=9,fig.height=7}
library(datasets)
library(ggplot2)
library(gridExtra)
g1 <- ggplot(mtcars, aes(drat,carb*100)) + geom_point(color="blue")
g2 <- ggplot(mtcars, aes(mpg,hp)) + geom_point(color="red")
g3 <- ggplot(mtcars, aes(qsec,wt)) + geom_point(color="green")
g4 <- ggplot(mtcars, aes(carb,disp*100)) + geom_point(color="orange")+
labs(y="This is the lab for 'disp' fairly long until here")
grid.arrange(g1,g2,g3,g4,ncol=2,nrow=2,
top=textGrob("MTCARS: Everything about cars...!",
gp=gpar(fontsize=16,font=1)))
```
效果比真实数据稍微微妙一些。注意 "green" 和 "orange" 图的对齐方式。
如有任何帮助,我们将不胜感激。
你可以为此使用 gtable,
library(gtable)
library(grid)
pl <- lapply(list(g1,g2,g3,g4), ggplotGrob)
g12 <- cbind(pl[[1]], pl[[2]], size="first")
g12$heights <- unit.pmax(pl[[1]][["heights"]], pl[[2]][["heights"]])
g34 <- cbind(pl[[3]], pl[[4]], size="first")
g34$heights <- unit.pmax(pl[[3]][["heights"]], pl[[4]][["heights"]])
g1234 <- rbind(g12, g34, size="first")
g1234$widths <- unit.pmax(g12[["widths"]], g34[["widths"]])
grid.newpage()
grid.draw(g1234)
我正在使用 gridExtra
包 grid.arrange()
函数绘制由 ggplot2
生成的 4 个图形。整体是 html-使用 knitr
包渲染,使用 RMarkdown
在 RStudio 上工作。
简而言之:
g1 <- ggplot(); g2 <- ggplot(); g3 <- ggplot(); g4 <- ggplot()
grid.arrange(g1,g2,g3,g4,ncol=2,nrow=2)
在 RMarkdown/knitr
中,我使用了这些选项:
output:
html_document:
keep_md: true
```r,figures, fig.align='center',fig.width=12,fig.height=10```
问题:4个图是按需要绘制的,但大小明显不成比例。
经过测试的解决方案:在此question中提出但没有取得多大成功。
编辑:现在提供带有html输出屏幕截图的可重现示例。
```{r mtcars plots, fig.align='center',fig.width=9,fig.height=7}
library(datasets)
library(ggplot2)
library(gridExtra)
g1 <- ggplot(mtcars, aes(drat,carb*100)) + geom_point(color="blue")
g2 <- ggplot(mtcars, aes(mpg,hp)) + geom_point(color="red")
g3 <- ggplot(mtcars, aes(qsec,wt)) + geom_point(color="green")
g4 <- ggplot(mtcars, aes(carb,disp*100)) + geom_point(color="orange")+
labs(y="This is the lab for 'disp' fairly long until here")
grid.arrange(g1,g2,g3,g4,ncol=2,nrow=2,
top=textGrob("MTCARS: Everything about cars...!",
gp=gpar(fontsize=16,font=1)))
```
效果比真实数据稍微微妙一些。注意 "green" 和 "orange" 图的对齐方式。
如有任何帮助,我们将不胜感激。
你可以为此使用 gtable,
library(gtable)
library(grid)
pl <- lapply(list(g1,g2,g3,g4), ggplotGrob)
g12 <- cbind(pl[[1]], pl[[2]], size="first")
g12$heights <- unit.pmax(pl[[1]][["heights"]], pl[[2]][["heights"]])
g34 <- cbind(pl[[3]], pl[[4]], size="first")
g34$heights <- unit.pmax(pl[[3]][["heights"]], pl[[4]][["heights"]])
g1234 <- rbind(g12, g34, size="first")
g1234$widths <- unit.pmax(g12[["widths"]], g34[["widths"]])
grid.newpage()
grid.draw(g1234)