如何使用knitr为本地图像设置大小以便降价?
我有一个本地图像,我想包括在一个.Rmd
文件,然后我将knit
并转换为与Pandoc
HTML幻灯片。 通过这个post ,这将插入本地图像:
![Image Title](path/to/your/image)
有没有办法修改这个代码来设置图片大小?
您也可以使用png
包读取图像,并使用grid.raster
从grid
包grid.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.width
和out.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}