R Markdown - 将表格和图形并排放置

5
我正在使用R Markdown输出PDF,我想让一个表格和一个图像横向并排对齐。我可以使用“fig.align =”right“将图像对齐到页面的右侧,但它被放置在表格(使用kable格式化)下面,而不是与它并排。有什么建议吗?
3个回答

5

这里有一种使用TeX包floatrow的方法:

---
title: "Untitled"
header-includes:
  - \usepackage{floatrow}
output: 
  pdf_document:
    keep_tex: true
---

\newfloatcommand{btabbox}{table}

\begin{figure}[H]
  \begin{floatrow}
    \ffigbox{%
```{r, fig.align = "right", echo = F}
plot(mpg ~ hp, data = mtcars)
```
    }{\caption{A figure}}

    \btabbox{%
```{r, fig.align = "right", echo = F}
knitr::kable(head(mtcars[,1:3]), format = "latex")
```
    }{\caption{A table}}
  \end{floatrow}
\end{figure}

enter image description here


4

我更喜欢Martin的方法,但如果你想要一个不太依赖LaTeX的解决方案,你可以将表格转换为网格图形,然后将其作为子图绘制出来

---
header-includes:
  - \usepackage{subfig}
output: pdf_document
---

```{r, fig.cap='two plots', fig.subcap= c('A figure', 'A table'), out.width = '.49\\linewidth', echo = F, fig.align='center'}
library(gridExtra)
library(grid)

plot(mpg ~ hp, data = mtcars)

grid.newpage()
grid.table(head(mtcars[,1:6]), theme = ttheme_minimal())
```

enter image description here


2
如果我想在HTML输出中实现这个,该怎么办? - Nicolas Molano

3
我可以使用multicol包和minipages组合来完成这项任务。这是另一种选择...
这是代码:
---
title: "Untitled"
header-includes:
  - \usepackage{multicol}
  - \newcommand{\btwocol}{\begin{multicols}{2}}
  - \newcommand{\etwocol}{\end{multicols}}
output: 
  pdf_document:
    keep_tex: true
---

```{r minipage_funs, echo = FALSE}
## adding minipages in Rmarkdown only seems to work for me when returned from function
fig_table_mp_start <- function() {
  return("\\begin{minipage}{\\textwidth}")
}
fig_table_mp_end <- function() {
  return("\\end{minipage}")
}
```

`r fig_table_mp_start()`

\btwocol

```{r, fig.align = "right", echo = FALSE}
plot(mpg ~ hp, data = mtcars)
```


```{r, fig.align = "right", echo = FALSE}
knitr::kable(head(mtcars[,1:3]), format = "latex")
```

\etwocol

`r fig_table_mp_end()`

我假设你可以通过调整内边距来使其看起来更漂亮。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接