在R Markdown中插入图片/表格


132

所以我想在R Markdown中插入一张表格和一张图片。在普通的Word文档中,我可以轻松地插入一张表格(5行2列),对于图片只需复制和粘贴即可。

  1. 如何插入5行2列的表格(并在其中键入内容)(并根据第二列比第一列宽的角度来调整表格)?

  2. 如何插入图片?据我了解,我应该先将图片另存为png,然后将其引用到我的文档中。另外,我想根据报告自动调整图片的大小,例如不占用一页或少于一页(我是否可以根据自己的喜好调整图片的大小)?

  3. 如果有人知道有关R Markdown的任何很棒的内容/格式,您还可以让我知道吗?我知道这#会为一个段落** **冠以大胆的名称,并加粗一些内容。那就是我所知道的全部!


我发现了如何添加表格!仍然想知道图片._。
user3784616 2014年

Answers:


152

有几个站点为表格和图像提供了合理的备忘单或操作指南。我名单上的第一名是:

图片使用起来非常简单,但不能调整图像以适合页面(请参见下面的更新)。要调整图像属性(大小,分辨率,颜色,边框等),您需要某种形式的图像编辑器。我发现我可以使用ImageMagickGIMPInkScape之一来做我需要的一切,这些都是免费和开源的。

要添加图片,请使用:

![Caption for the picture.](/path/to/image.png)

我知道pandoc支持PNG和JPG,它们应该可以满足您的大多数需求。

如果在R中创建图像,则可以控制图像大小(例如,绘图)。如果您使用的是knitr,则可以直接在命令中创建图像,或者甚至可以通过选项完成此操作(强烈建议...请查看块选项,尤其是在Plots下)。

我强烈建议仔细阅读这些教程。markdown非常方便,并且具有许多人不经常使用的功能,但就像他们一旦学会了一样。(因此,SO不一定是提出在这些教程中直接回答的问题的最佳位置。)


更新,2019年8月31日

不久前,pandoc为图片合并了“ link_attributes”(显然是在2015年,提交为jgm / pandoc#244cd56)。“调整图像大小”可以直接进行。例如:

![unchanged image](foo.jpg)
![much-smaller image](foo.jpg){#id .class width=30 height=20px}
![half-size image](foo.jpg){#id .class width=50% height=50%}

尺寸可设置有没有单位(像素假定),或用“ ,,,和”pxcmmmininch%(参考:https://pandoc.org/MANUAL.html,搜索link_attributes)。

(尽管进行了长时间的讨论,但我不确定CommonMark是否已实现此功能。)


如果您仍在阅读本图片,则为图片。我可以在没有图片的另一台计算机上再次打开Rmarkdown文件吗?将图片添加到R后,图片是否永久?如果不是的话,我如何使其永久化
2014年

3
该文件在文件中不是永久的.Rmd。如果您将其“编译”(使用pandoc)为HTML,则添加后--self-contained会将图像编码为html文件。PDF和Word文件会将其作为文件的一部分,因此发送出去时,您将不需要包括实际的PNG文件。Rmd文件,但是,您需要手动包括图像文件。
r2evans 2014年

它是如何工作的..?我什至似乎都无法添加图片。因此,基本上,该图片名为“就业率”,它位于一个名为“摘要”的文件夹中。该文件的位置是C:\ Users \ Paul \ Desktop \ Summary。所以我写的代码为[就业率。(C:/Users/Paul/Desktop.Summary.png)和它不工作!
user3784616

您能给我一个如何使用--self-contained的例子吗?因此,当我将其另存为word文档时,它将永久具有该图像吗?我还是有点困惑
user3784616

更好的是,在Rmd的YAML标头中使用它更简单(显然是默认值)。参考如下:rstudio上的rmarkdown。超过1/3的部分是有关“文档依赖项”的部分,该部分讨论了其用法。
r2evans 2014年

87

更新:由于来自@ r2evans的答案,将图像插入R Markdown并控制图像的大小要容易得多。

图片

本书非常出色地解释了包括图像的最佳方法是使用include_graphics()。例如,全幅图像可以使用以下标题打印:

```{r pressure, echo=FALSE, fig.cap="A caption", out.width = '100%'}
knitr::include_graphics("temp.png")
```

该方法优于pandoc方法的原因![your image](path/to/image)

  • 它会根据输出格式(HTML / PDF / Word)自动更改命令
  • 可以将相同的语法用于绘图的大小(fig.width),报告中的输出宽度(out.width),添加标题(fig.cap)等。
  • 它使用最佳的图形设备进行输出。这意味着PDF图像保持高分辨率。

桌子

knitr::kable()是包括在R降价报告表作为充分说明了最好的方式在这里。同样,此功能很聪明,可以自动为所选输出选择正确的格式。

```{r table}
knitr::kable(mtcars[1:5,, 1:5], caption = "A table caption")
```

如果您想在R Markdown中创建自己的简单表并使用R Studio,则可以检出该insert_table 。它为制作表格提供了一个整洁的图形界面。

实现表格列宽的自定义样式不在的范围内knitr,但kableExtra已编写该软件包来帮助实现此目的:https : //cran.r-project.org/web/packages/kableExtra/index.html

风格提示

[R降价小抄仍然是了解你最多只能使用基本语法的最佳场所。

如果您正在寻找格式的潜在扩展名,那么该bookdown软件包也值得探讨。它提供了交叉引用,创建特殊标头等功能:https : //bookdown.org/yihui/bookdown/markdown-extensions-by-bookdown.html


优秀的解决方案!
Marcus Nunes

您知道如何将图像位置锁定到位吗?现在,很难预测在编译时它将出现的位置。
wolfsatthedoor

1
我一直在![image caption](\path\to\image.png)尝试在R Markdown渲染的.docx中插入图像,但一直失败了,直到knitr::include_graphics()今天看到您的解决方案为止。非常感谢!
Elarry

5

在插入图片时,![Caption for the picture.](/path/to/image.png)如果需要PDF输出,r2evans的建议可能会出现问题。

knitr函数include_graphics knitr::include_graphics('/path/to/image.png')是一种更具移植性的替代方法,它将代表您生成最适合您所生成的输出格式的减价。


好奇... ![caption](path/to/image.png)如果需要PDF输出,为什么使用有问题?也许这个答案已经过时了(就像我最初的答案一样),但是我至少已经在PDF输出中使用了两年了。
r2evans

4

3月,我通过impress.js在slidify,Rmarkdown中进行了演示,这是一个很酷的3D框架。我的标题看起来像index.Rmd

---
title       : French TER (regional train) monthly regularity
subtitle    : since January 2013
author      : brigasnuncamais
job         : Business Intelligence / Data Scientist consultant
framework   : impressjs     # {io2012, html5slides, shower, dzslides, ...}
highlighter : highlight.js  # {highlight.js, prettify, highlight}
hitheme     : tomorrow      # 
widgets     : []            # {mathjax, quiz, bootstrap}
mode        : selfcontained # {standalone, draft}
knit        : slidify::knit2slides

子目录是:

/assets /css    /impress-demo.css
        /fig    /unnamed-chunk-1-1.png (generated by included R code)
        /img    /SS850452.png (my image used as background)
        /js     /impress.js
        /layouts/custbg.html # content:--- layout: slide --- {{{ slide.html }}}
        /libraries  /frameworks /impressjs
                                /io2012
                    /highlighters   /highlight.js
                                    /impress.js
index.Rmd

带有背景代码片段中的图像的幻灯片将位于我的.Rmd中:

<div id="bg">
  <img src="assets/img/SS850452.png" alt="">
</div>  

自从我上次使用它以来,出现了一些问题(照片不再是背景图像,在R图上用太大的文字显示),但在我的本地计算机上效果很好。当我在RPub上运行时,出现了麻烦。


2
如果您有新问题,请单击“ 提问”按钮提问。如果它有助于提供上下文,请包括此问题的链接。
Jaap 2015年

8
这不是一个问题,这是一个答案:-)
brigasnuncamais

2
第一个链接断开。
daknowles
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.