sha*_*eyi 2 r-markdown gridextra
我正在使用pdf输出在R markdown中编写报告.我有几个图,我想在2x2矩阵中显示每页四个图.有没有办法让它们像单独的字幕那样显示?
这是我到目前为止所尝试的:
包gridExtra - 我可以轻松设置我想要的布局,但我无法在图中添加标题.是否可以选择在图中添加标题grid.arrange?
将每个绘图放在不同的块中并使用R块选项进行播放.基本上设置out.width='.49\\linewidth', fig.align='right'和fig.align='left'替代.在这里,我可以设置单独的标题,fig.cap但这些图总是显示在不同的页面上.
我尝试使用fig.width和fig.height选项一起玩,并能够让它们显示在页面各自左侧或右侧的同一页面上.但是,标题始终采用整页宽度并保持在中心而不是用绘图大小包装.有没有办法按照情节大小规则制作标题?
这是一个示例代码:
```{r, echo=FALSE, cache=FALSE, results=FALSE, warning=FALSE, comment=FALSE, message= FALSE, eval =T, fig.height= 9}
p1<- ggplot(mpg, aes(displ, hwy, colour = class)) +
geom_point()+
labs(caption = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ")+
theme(plot.caption = element_text(hjust = 0.5))
p2<- ggplot(mpg, aes(displ, hwy, colour = class)) +
geom_point()+
labs(caption = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ")+
theme(plot.caption = element_text(hjust = 0.5))
p3<- ggplot(mpg, aes(displ, hwy, colour = class)) +
geom_point()+
labs(caption = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ")+
theme(plot.caption = element_text(hjust = 0.5))
p4<- ggplot(mpg, aes(displ, hwy, colour = class)) +
geom_point()+
labs(caption = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ")+
theme(plot.caption = element_text(hjust = 0.5))
library(gridExtra)
grid.arrange(p1,p2,p3,p4)
```
Run Code Online (Sandbox Code Playgroud)
您可以LaTeX的输出中使用子图,作为描述在这里.如果你有很多图并且想要更容易地提供字幕,你可以captions <- c("Caption 1", "Caption 2"在块之前的列表(即)中指定这些,并将此列表提供给块.fig.subcap=captions
---
output: pdf_document
header-includes:
- \usepackage{subfig}
---
```{r}
captions <- c("Caption 1",
"Caption 2",
"Caption 3",
"Caption 4: a very very very very very very very very very long one")
```
```{r, echo=FALSE, cache=FALSE, results=FALSE, warning=FALSE, comment=FALSE, message= FALSE, eval =T, fig.cap = "Overall Caption", fig.subcap=captions, out.width='.49\\linewidth', fig.asp=1, fig.ncol = 2}
library(ggplot2)
p1<- ggplot(mpg, aes(displ, hwy, colour = class)) +
geom_point()+
theme(plot.caption = element_text(hjust = 0.5))
p2<- ggplot(mpg, aes(displ, hwy, colour = class)) +
geom_point()+
theme(plot.caption = element_text(hjust = 0.5))
p3<- ggplot(mpg, aes(displ, hwy, colour = class)) +
geom_point()+
theme(plot.caption = element_text(hjust = 0.5))
p4<- ggplot(mpg, aes(displ, hwy, colour = class)) +
geom_point()+
theme(plot.caption = element_text(hjust = 0.5))
p1
p2
p3
p4
```
Run Code Online (Sandbox Code Playgroud)
为确保子图之间存在余量,您可以margins在加载包时添加选项:
- \usepackage[margin = 8pt]{subfig}
Run Code Online (Sandbox Code Playgroud)
查看软件包文档中的其他选项:http://anorien.csc.warwick.ac.uk/mirrors/CTAN/macros/latex/contrib/subfig/subfig.pdf