188 votes

Comment définir la taille d'une image locale en utilisant knitr for markdown ?

J'ai une image locale que j'aimerais inclure dans un fichier d'images. .Rmd que je vais ensuite knit et convertir en diapositives HTML avec Pandoc . Par ce poste ce qui permettra d'insérer l'image locale :
![Image Title](path/to/your/image)

Existe-t-il un moyen de modifier ce code pour définir également la taille de l'image ?

229voto

CL. Points 9282

La question est ancienne, mais elle suscite encore beaucoup d'attention. Les réponses existantes étant dépassées, voici une solution plus actuelle :

Redimensionnement des images locales

A partir de knitr 1.12 il existe la fonction include_graphics . De ?include_graphics (c'est moi qui souligne) :

Le principal avantage de l'utilisation de cette fonction est qu'elle est portable, c'est-à-dire qu'elle fonctionne pour tous les formats de document que l'on peut utiliser. knitr Vous n'avez donc pas besoin de réfléchir si vous devez utiliser, par exemple, la syntaxe LaTeX ou Markdown, pour intégrer une image externe. Les options de Chunk relatives à la sortie graphique qui fonctionnent pour les tracés R normaux fonctionnent également pour ces images, telles que out.width y out.height .

Exemple :

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

Avantages :

  • Plus de La réponse de agastudy : Il n'est pas nécessaire d'utiliser des bibliothèques externes ou de re-raster l'image.
  • Plus de Réponse de Shruti Kapoor : Pas besoin d'écrire manuellement du HTML. De plus, l'image est incluse dans la version autonome du fichier.

Inclure les images générées

Pour composer le chemin vers une parcelle qui est généré en un seul morceau (mais non inclus), les options du chunk opts_current$get("fig.path") (chemin vers le répertoire des figures) ainsi que opts_current$get("label") (étiquette du chunk actuel) peut être utile. L'exemple suivant utilise fig.path pour inclure la deuxième des deux images qui ont été générées (mais pas affichées) dans le premier chunk :

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

Le schéma général des chemins de la figure est le suivant [fig.path]/[chunklabel]-[i].[ext]chunklabel est l'étiquette du chunk où le tracé a été généré, i est l'indice de la parcelle (dans ce chunk) et ext est l'extension du fichier (par défaut png dans les documents RMarkdown).

154voto

Diego Alburez Points 917

Réponse non actualisée : en knitr 1.17 vous pouvez simplement utiliser

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

modifier selon le commentaire de @jsb

Notez que cela ne fonctionne que sans espace, par exemple {width=250px} et non {width = 250px}.

112voto

agstudy Points 55104

Vous pouvez également lire l'image en utilisant png par exemple, et de le tracer comme un tracé normal en utilisant le logiciel grid.raster de la grid paquet.

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

Avec cette méthode, vous avez le contrôle total de la taille de votre image.

38voto

Nick Kennedy Points 10413

Voici quelques options qui permettent de conserver le fichier autonome sans retoucher l'image :

Enveloppez l'image dans div tags

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

Utiliser une feuille de style

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;
}

Si vous avez plus d'une image, vous devrez peut-être utiliser le pseudo-sélecteur nth-child pour cette deuxième option.

21voto

Shruti Kapoor Points 340

Si vous convertissez en HTML, vous pouvez définir la taille de l'image en utilisant la syntaxe HTML :

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

ou toute autre hauteur et largeur que vous souhaitez donner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X