如何使用knitr为本地图像设置大小以便降价?

我有一个本地图像,我想包括在一个.Rmd文件,然后我将knit并转换为与Pandoc HTML幻灯片。 通过这个post ,这将插入本地图像:
![Image Title](path/to/your/image)

有没有办法修改这个代码来设置图片大小?

您也可以使用png包读取图像,并使用grid.rastergridgrid.raster其绘制为常规图。

 ```{r fig.width=1, fig.height=10,echo=FALSE} library(png) library(grid) img <- readPNG("path/to/your/image") grid.raster(img) ``` 

使用这种方法,您可以完全控制图像的大小。

问题是旧的,但仍然受到很多关注。 由于现有的答案已经过时,这里有一个更新的解决scheme:

调整本地图像的大小

作为knitr 1.12 ,有函数include_graphics 。 来自?include_graphics (强调我的):

使用这个函数的主要优点是它是可移植的,因为它适用于knitr支持的所有文档格式,所以您不需要考虑是否必须使用LaTeX或Markdown语法来embedded外部图像。 与graphics输出相关的块选项也适用于这些图像,例如out.widthout.height

例:

 ```{r, out.width = "400px"} knitr::include_graphics("path/to/image.png") ``` 

优点:

  • 在agastudy的答案 :不需要外部库或重新rastering图像。
  • Shruti Kapoor的答案是 :不需要手动编写HTML。 此外,图像包含在文件的独立版本中。

包括生成的图像

为了组成 (但不包括在内)中生成的图的path,块选项opts_current$get("fig.path") (graphics目录的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"))) ``` 

graphicspath的一般模式是[fig.path]/[chunklabel]-[i].[ext] ,其中chunklabel是绘图已经生成的块的标签, i是绘图索引(在这个块内)而ext是文件扩展名(默认是在RMarkdown文件中的png )。

这里有一些选项可以保持文件自包含而不会影响图像:

div标签包装图像

 <div style="width:300px; height=200px"> ![Image](path/to/image) </div> 

使用样式表

test.Rmd

 --- title: test output: html_document css: test.css --- ## Page with an image {#myImagePage} ![Image](path/to/image) 

test.css

 #myImagePage img { width: 400px; height: 200px; } 

如果您有多个图像,则可能需要使用第二个选项的第n个子选项。

如果要转换为HTML,则可以使用以下HTML语法来设置图像的大小:

  <img src="path/to/image" height="400px" width="300px" /> 

或者你想要给的任何高度和宽度。

knitr :: include_graphics解决scheme在调整graphics大小方面效果很好,但我无法弄清楚如何使用它来生成并排resize的graphics。 我发现这个post对于这样做很有用。

未更新的答案:在knitr 1.14你可以简单地使用

 ![Image Title](path/to/your/image){width=250px}