Insérer une image / un tableau dans R Markdown

132

Je veux donc insérer un tableau ET une image dans R Markdown. Dans un document Word ordinaire, je peux simplement insérer facilement un tableau (5 lignes par 2 colonnes), et pour l'image, simplement copier et coller.

  1. Comment insérer un tableau de 5 lignes par 2 colonnes (et y taper également des éléments) (et également ajuster le tableau en termes de largeur de la 2ème colonne par rapport à la première)?

  2. Comment insérer une image? D'après ce que je comprends, je dois d'abord enregistrer l'image au format png, puis la référencer dans mon document. De plus, je veux ajuster automatiquement l'image au rapport, comme ne pas prendre plus d'une page ou moins d'une page (y a-t-il un moyen pour moi d'ajuster la taille de l'image à mon goût)?

  3. Si quelqu'un sait quelque chose de cool / formatage sur R Markdown, pourriez-vous également me le faire savoir? Je sais que cela #fait un grand titre pour un paragraphe et ** **met les choses en gras. C'est à peu près tout ce que je sais!

user3784616
la source
J'ai découvert comment ajouter des tables! Je m'interroge toujours sur les images ._.
user3784616

Réponses:

152

Plusieurs sites fournissent des feuilles de triche ou des HOWTO raisonnables pour les tableaux et les images. En haut de ma liste sont:

Les images sont très simples à utiliser mais n'offrent pas la possibilité d'ajuster l'image pour l'adapter à la page (voir Mise à jour , ci-dessous). Pour ajuster les propriétés de l'image (taille, résolution, couleurs, bordure, etc.), vous aurez besoin d'une forme d'éditeur d'image. Je trouve que je peux faire tout ce dont j'ai besoin avec l'un des ImageMagick , GIMP ou InkScape , tous gratuits et open source.

Pour ajouter une image, utilisez:

![Caption for the picture.](/path/to/image.png)

Je sais que pandoc prend en charge les formats PNG et JPG, ce qui devrait répondre à la plupart de vos besoins.

Vous contrôlez la taille de l'image si vous la créez dans R (par exemple, un tracé). Cela peut être fait soit directement dans la commande pour créer l'image, soit, mieux encore, via les options si vous utilisez knitr (hautement recommandé ... consultez les options de bloc , en particulier sous Tracés).

Je recommande fortement de parcourir ces tutoriels; markdown est très pratique et possède de nombreuses fonctionnalités que la plupart des gens n'utilisent pas régulièrement mais aiment vraiment une fois qu'ils l'ont appris. (SO n'est pas nécessairement le meilleur endroit pour poser des questions auxquelles ces didacticiels répondent très directement.)


Mise à jour, 31 août 2019

Il y a quelque temps, pandocincorporé "link_attributes" pour les images (apparemment en 2015, avec commit jgm / pandoc # 244cd56 ). Le "redimensionnement des images" peut être effectué directement. Par exemple:

![unchanged image](foo.jpg)
![much-smaller image](foo.jpg){#id .class width=30 height=20px}
![half-size image](foo.jpg){#id .class width=50% height=50%}

Les dimensions peuvent être fournis sans unités (pixels pris en charge), ou " , , , et "pxcmmmininch% (ref: https://pandoc.org/MANUAL.html , chercher link_attributes).

(Je ne suis pas certain que CommonMark ait implémenté cela, bien qu'il y ait eu une longue discussion .)

r2evans
la source
Si vous lisez toujours ceci, à propos de l'image. Puis-je ouvrir à nouveau le fichier Rmarkdown sur un autre ordinateur sans l'image? L'image est-elle permanente une fois que je l'ajoute à R? Sinon comment le rendre permanent
user3784616
3
Le fichier n'est pas permanent dans le .Rmdfichier. Si vous le «compilez» (en utilisant pandoc) en HTML, l'ajout --self-containedencodera l'image dans le fichier html. Les fichiers PDF et Word l'incluront dans le fichier, vous n'aurez donc pas besoin d'inclure le fichier PNG réel lorsque vous l'envoyez. Cependant, les fichiers Rmd nécessitaient que vous incluiez le fichier image manuellement.
r2evans
Comment ça marche..? Je n'arrive même pas à ajouter l'image. Donc, en gros, l'image s'appelle "Taux d'emploi" et se trouve dans un dossier appelé "Résumé". L'emplacement du fichier est C: \ Users \ Paul \ Desktop \ Summary. Donc le code que j'ai écrit est! [Taux d'emploi.] (C: /Users/Paul/Desktop.Summary.png) et cela ne fonctionne pas
user3784616
pouvez-vous me donner un exemple de la façon d'utiliser le - self-content? Donc, quand je l'enregistre en tant que document Word, il aura définitivement l'image? Je suis encore un peu confus
user3784616
Mieux encore, l'utiliser dans l'en-tête YAML du Rmd est plus simple (et la valeur par défaut, apparemment). Voici la référence: rmarkdown chez rstudio . Plus d'un tiers de la descente se trouve une section sur les «Dépendances du document» qui traite de son utilisation.
r2evans
87

Mise à jour : depuis la réponse de @ r2evans, il est beaucoup plus facile d'insérer des images dans R Markdown et de contrôler la taille de l'image.

Images

Le livre livre fait un excellent travail en expliquant que la meilleure façon d'inclure des images est d'utiliser include_graphics(). Par exemple, une image pleine largeur peut être imprimée avec une légende ci-dessous:

```{r pressure, echo=FALSE, fig.cap="A caption", out.width = '100%'}
knitr::include_graphics("temp.png")
```

La raison pour laquelle cette méthode est meilleure que l'approche pandoc ![your image](path/to/image):

  • Il change automatiquement la commande en fonction du format de sortie (HTML / PDF / Word)
  • La même syntaxe peut être utilisée pour la taille du tracé ( fig.width), la largeur de sortie dans le rapport ( out.width), ajouter des légendes ( fig.cap) etc.
  • Il utilise les meilleurs périphériques graphiques pour la sortie. Cela signifie que les images PDF restent haute résolution.

les tables

knitr::kable()est le meilleur moyen d'inclure des tableaux dans un rapport R Markdown comme expliqué en détail ici . Encore une fois, cette fonction est intelligente en sélectionnant automatiquement le formatage correct pour la sortie sélectionnée.

```{r table}
knitr::kable(mtcars[1:5,, 1:5], caption = "A table caption")
```

Si vous souhaitez créer vos propres tableaux simples dans R Markdown et que vous utilisez R Studio, vous pouvez consulter le insert_table package . Il fournit une interface graphique ordonnée pour créer des tableaux.

Obtenir un style personnalisé de la largeur de la colonne du tableau dépasse le cadre de knitr, mais le kableExtrapackage a été écrit pour aider à atteindre cet objectif: https://cran.r-project.org/web/packages/kableExtra/index.html

Conseils de style

La feuille de triche de R Markdown est toujours le meilleur endroit pour en savoir plus sur la syntaxe de base que vous pouvez utiliser.

Si vous recherchez des extensions potentielles du formatage, le bookdownpackage mérite également d'être exploré. Il offre la possibilité de faire des références croisées, de créer des en-têtes spéciaux et plus encore: https://bookdown.org/yihui/bookdown/markdown-extensions-by-bookdown.html

Michael Harper
la source
Excellente solution!
Marcus Nunes
Savez-vous comment verrouiller l'emplacement de l'image en place? À l'heure actuelle, il est très difficile de prédire où il apparaîtra lorsque je le compilerai.
wolfsatthedoor
1
Je luttais pour ![image caption](\path\to\image.png)essayer d'insérer une image dans R Markdown rendu .docx, mais j'ai échoué mystérieusement, jusqu'à ce que je voie votre knitr::include_graphics()solution aujourd'hui. Merci beaucoup!
elarry
5

Lorsqu'il s'agit d'insérer une image, la suggestion de r2evans ![Caption for the picture.](/path/to/image.png)peut être problématique si une sortie PDF est requise.

La fonction knitr include_graphics knitr::include_graphics('/path/to/image.png') est une alternative plus portable qui générera, en votre nom, la démarque la plus appropriée au format de sortie que vous générez.

ms609
la source
Curieux ... pourquoi est-il ![caption](path/to/image.png)problématique d'utiliser une sortie PDF? Peut-être que cette réponse est obsolète (comme ma réponse initiale), mais je l'utilise dans la sortie PDF depuis au moins quelques années.
r2evans le
4

En mars, j'ai fait une présentation de deck dans slidify, Rmarkdown avec impress.js qui est un framework 3D sympa. mon en- index.Rmdtête ressemble à

---
title       : French TER (regional train) monthly regularity
subtitle    : since January 2013
author      : brigasnuncamais
job         : Business Intelligence / Data Scientist consultant
framework   : impressjs     # {io2012, html5slides, shower, dzslides, ...}
highlighter : highlight.js  # {highlight.js, prettify, highlight}
hitheme     : tomorrow      # 
widgets     : []            # {mathjax, quiz, bootstrap}
mode        : selfcontained # {standalone, draft}
knit        : slidify::knit2slides

les sous-répertoires sont:

/assets /css    /impress-demo.css
        /fig    /unnamed-chunk-1-1.png (generated by included R code)
        /img    /SS850452.png (my image used as background)
        /js     /impress.js
        /layouts/custbg.html # content:--- layout: slide --- {{{ slide.html }}}
        /libraries  /frameworks /impressjs
                                /io2012
                    /highlighters   /highlight.js
                                    /impress.js
index.Rmd

une diapositive avec une image dans un extrait de code d'arrière-plan se trouverait dans mon .Rmd:

<div id="bg">
  <img src="assets/img/SS850452.png" alt="">
</div>  

Certains problèmes sont apparus depuis la dernière fois que j'ai travaillé dessus (les photos ne sont plus en arrière-plan, le texte est trop grand sur mon tracé R) mais cela fonctionne bien sur mon local. Les problèmes surviennent lorsque je l'exécute sur RPubs.

brigasnuncamais
la source
2
Si vous avez une nouvelle question, posez-la en cliquant sur le bouton Poser une question . Incluez un lien vers cette question si cela permet de fournir un contexte.
Jaap
8
ce n'était pas une question, c'était une réponse :-)
brigasnuncamais
2
Le premier lien est rompu.
daknowles