web-dev-qa-db-fra.com

insérer des images png côte à côte à l'aide de knitr

Comment puis-je insérer des fichiers png côte à côte depuis mon ordinateur dans rstudio lors de la création d'un document html?

Ce qui suit fonctionne bien (parcelles)

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

Mais pour les images d'un chemin, seule la dernière image est affichée

 ```{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)
  ```
26
Salvador

Vous devriez apprendre la syntaxe de Markdown (vraiment, vous avez besoin d'environ cinq minutes). La solution n'implique même pas du tout R:

![](path/to/picture.png) ![](path/to/picture2.png)

BTW, vous feriez mieux d'éviter les chemins absolus. Utilisez des chemins relatifs (par rapport à votre fichier Rmd).

20
Yihui Xie

Il nous manque encore une bonne réponse à cette question si la sortie souhaitée est un document MS Word (je vois que l'OP a spécifiquement demandé une sortie HTML, mais je suppose que je ne suis pas le seul à être venu ici à la recherche d'une solution qui fonctionne également pour les documents MS Word).

Voici une méthode, basée sur this et this , mais le résultat n'est pas très satisfaisant:

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)
13
Ben

Vous pouvez utiliser knitr::include_graphics() car celui-ci accepte un vecteur de chemins comme argument.

Ensuite, vous devez utiliser fig.show='hold',fig.align='center' afin de les tracer sur la même ligne et out.width="49%", out.height="20%" pour contrôler la taille de sortie.

```{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"))
``` 
13
Marc Bataillou