我有一个本地图像,我想将其包含在一个.Rmd
文件中,然后knit
将其转换为带有Pandoc
. 根据这篇文章,这将插入本地图像:
![Image Title](path/to/your/image)
有没有办法修改此代码以设置图像大小?
这个问题很老,但仍然受到很多关注。由于现有答案已经过时,这里有一个更新的解决方案:
从knitr
1.12开始,就有了这个功能include_graphics
。来自?include_graphics
(强调我的):
使用此功能的主要优点是它是可移植的,因为它适用于所有
knitr
支持的文档格式,因此您无需考虑是否必须使用例如 LaTeX 或 Markdown 语法来嵌入外部图片。适用于普通 R 绘图的与图形输出相关的块选项也适用于这些图像,例如out.width
和out.height
。
```{r, out.width = "400px"}
knitr::include_graphics("path/to/image.png")
```
优点:
要组成在块中生成的图的路径(但不包括在内),块选项opts_current$get("fig.path")
(图目录的路径)以及opts_current$get("label")
(当前块的标签)可能很有用。以下示例用于fig.path
包含在第一个块中生成(但未显示)的两个图像中的第二个:
```{r generate_figures, fig.show = "hide"}
library(knitr)
plot(1:10, col = "green")
plot(1:10, col = "red")
```
```{r}
include_graphics(sprintf("%sgenerate_figures-2.png", opts_current$get("fig.path")))
```
图形路径的一般模式是[fig.path]/[chunklabel]-[i].[ext]
,其中chunklabel
是生成绘图的块的标签,i
是绘图索引(在此块内),ext
是文件扩展名(默认情况下png
在 RMarkdown 文档中)。
未更新的答案:knitr 1.17
您可以简单地使用
![Image Title](path/to/your/image){width=250px}
根据@jsb 的评论进行编辑
请注意,这仅适用于没有空格,例如 {width=250px} 而不是 {width = 250px}
例如,您还可以使用包读取图像,并像使用包png
中的常规绘图一样绘制它。grid.raster
grid
```{r fig.width=1, fig.height=10,echo=FALSE}
library(png)
library(grid)
img <- readPNG("path/to/your/image")
grid.raster(img)
```
使用这种方法,您可以完全控制图像的大小。
以下是一些保持文件自包含而不重新制作图像的选项:
div
标签中<div style="width:300px; height:200px">
![Image](path/to/image)
</div>
---
title: test
output: html_document
css: test.css
---
## Page with an image {#myImagePage}
![Image](path/to/image)
#myImagePage img {
width: 400px;
height: 200px;
}
如果您有多个图像,则可能需要为第二个选项使用 nth-child 伪选择器。
如果要转换为 HTML,则可以使用 HTML 语法设置图像的大小,方法是:
<img src="path/to/image" height="400px" width="300px" />
或您想要给出的任何高度和宽度。
今天遇到了同样的问题,并knitr 1.16
在编织到 PDF 时找到了另一个选项(这需要您安装 pandoc):
![Image Title](path/to/your/image){width=70%}
此方法可能需要您进行一些反复试验才能找到适合您的尺寸。它特别方便,因为它使将两个图像并排放置一个更漂亮的过程。例如:
![Image 1](path/to/image1){width=70%}![Image 2](path/to/image2){width=30%}
您可以发挥创意,将其中的几个并排堆叠,并根据需要调整它们的大小。有关更多想法和示例,请参阅https://rpubs.com/RatherBit/90926。
另一个对我有用的选项是使用这样的 dpi 选项knitr::include_graphics()
:
```{r}
knitr::include_graphics("path/to/image.png", dpi = 100)
```
...与在块中定义尺寸相比,这肯定(除非你做数学)是反复试验,但也许它会对某人有所帮助。
knitr::include_graphics 解决方案在调整图形大小方面效果很好,但我无法弄清楚如何使用它来生成并排调整大小的图形。我发现这篇文章对这样做很有用。