我正在使用pdf输出在R markdown中编写报告。我有几个图,我想在2x2矩阵中显示每页四个图。有没有办法让它们像单独的字幕一样显示?
这是我到目前为止所尝试的内容:
包gridExtra - 我可以轻松设置我想要的布局,但我无法在图中添加标题。是否有选项可以在grid.arrange
中添加标题?< / p>
将每个地块放置在不同的块中并使用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)
```
答案 0 :(得分:6)
您可以在LaTeX输出中使用子图,如描述here。如果您有很多图并且想要更容易地提供字幕,您可以在块之前在列表中指定这些(即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
```
为确保子图之间存在余量,您可以在加载包时添加margins
选项:
- \usepackage[margin = 8pt]{subfig}
查看软件包文档中的其他选项:http://anorien.csc.warwick.ac.uk/mirrors/CTAN/macros/latex/contrib/subfig/subfig.pdf