使用knitr并排插入png图像

时间:2014-08-20 22:16:26

标签: r markdown knitr

在创建html文档时,如何将计算机中的并排png文件插入rstudio?

以下效果很好(情节)

```{r, echo=FALSE,fig.width=4, fig.show='hold'}
 plot(cars)
plot(rnorm(100))
```

但是对于路径中的图像,只显示最后一张图像

 ```{r fig.width=3, fig.show='hold'}
   library(png)
  img <- readPNG("C:/path to my picture/picture.png")
  grid.raster(img)

  img2 <- readPNG("C:/path to my picture/picture2.png")
  grid.raster(img2)
  ```

4 个答案:

答案 0 :(得分:15)

你应该学习Markdown的语法(实际上,你需要大约五分钟)。该解决方案甚至根本不涉及R:

![](path/to/picture.png) ![](path/to/picture2.png)
顺便说一句,你最好避开绝对路径。使用相对路径(相对于您的Rmd文件)。

答案 1 :(得分:12)

如果所需的输出是MS Word文档,我们仍然缺乏对此问题的良好答案(我看到OP专门要求HTML输出,但我猜测我并不是唯一一个来到这里寻找适用于MS Word文档的解决方案。)

这是一种基于thisthis的方法,但效果并不理想:

library(png)
library(grid)
library(gridExtra)
img1 <-  rasterGrob(as.raster(readPNG("path/to/picture1.png")), interpolate = FALSE)
img2 <-  rasterGrob(as.raster(readPNG("path/to/picture2.png")), interpolate = FALSE)
grid.arrange(img1, img2, ncol = 2)

答案 2 :(得分:4)

您可以使用knitr::include_graphics(),因为它接受路径向量作为参数。

然后,您应该使用fig.show='hold',fig.align='center'以便将它们绘制在同一行上,并使用out.width="49%", out.height="20%"来控制输出大小。

```{r, echo=FALSE,out.width="49%", out.height="20%",fig.cap="caption",fig.show='hold',fig.align='center'}
knitr::include_graphics(c("path/to/img1","path/to/img1"))
``

答案 3 :(得分:0)

还可以使用cowplot

library(cowplot)
ggdraw() + 
  draw_image("path/to/picture1.png", width = 0.5) + 
  draw_image("path/to/picture2.png", width = 0.5, x = 0.5)

也适用于所有输出格式。