web-dev-qa-db-fra.com

Insérer une image / un tableau dans R Markdown

Je veux donc insérer une table ET une image dans R Markdown. Dans un document Word classique, je peux facilement insérer un tableau (5 lignes sur 2 colonnes), et pour l'image, il suffit de copier et coller.

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

  2. Comment insérer une image? D'après ce que j'ai compris, je devrais d'abord enregistrer l'image au format png, puis la référencer dans mon document. De plus, je souhaite ajuster automatiquement l'image au rapport, par exemple pour ne pas occuper plus d'une page ou moins d'une page (puis-je ajuster la taille de l'image à ma guise)?

  3. Si quelqu'un sait quelque chose de cool/formatage à propos de R Markdown, pouvez-vous également me le faire savoir? Je sais que # donne un gros titre à un paragraphe, et ** ** met en gras des choses. C'est à peu près tout ce que je sais cependant!

100
user3784616

Plusieurs sites fournissent des feuilles de triche ou des guides pratiques raisonnables pour les tableaux et les images. En tête de liste sont:

Les images sont très simples à utiliser mais n'offrent pas la possibilité d'ajuster l'image à la page (voir Mettre à 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 des logiciels libres et ouverts.

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, qui devraient répondre à la plupart de vos besoins.

Vous avez le contrôle sur la taille de l’image si vous la créez dans R (par exemple, un tracé). Cela peut être fait directement dans la commande pour créer l'image ou, mieux encore, via des options si vous utilisez knitr (fortement recommandé ... consultez options de bloc) , spécifiquement sous Parcelles).

Je recommande fortement de parcourir ces tutoriels; Le démarquage est très pratique et comporte de nombreuses fonctionnalités que la plupart des gens n'utilisent pas régulièrement, mais aiment vraiment les apprendre une fois. (SO n’est pas nécessairement le meilleur endroit pour poser des questions auxquelles on répond très directement dans ces tutoriels.)


Mise à jour, 31 août 2019

Il y a quelque temps, pandoc a incorporé "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 fournies sans unité (pixels supposés), ou avec "px, cm, mm, in, inch et % " (ref: https://pandoc.org/MANUAL.html , recherchez link_attributes).

(Je ne suis pas sûr que CommonMark ait implémenté cela, bien qu'il y ait eu un longue discussion .)

124
r2evans

Update : 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

bookdown fait un excellent travail en expliquant que la meilleure façon d'inclure des images consiste à utiliser include_graphics(). Par exemple, une image en 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 PDF les images restent en haute résolution.

Les tables

knitr::kable() est le meilleur moyen d’inclure des tables dans un rapport R Markdown comme expliqué en détail ici . De nouveau, 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 voulez créer vos propres tables simples dans R Markdown et utilisez R Studio, vous pouvez extraire le insert_tablepackage . Il fournit une interface graphique ordonnée pour la création de tableaux.

La création d'un style personnalisé pour la largeur de la colonne de table dépasse le cadre de knitr, mais le package kableExtra a été écrit pour vous aider à atteindre cet objectif: https://cran.r-project.org /web/packages/kableExtra/index.html

Conseils de style

Le aide-mémoire 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 au formatage, le paquetage bookdown est également intéressant à explorer. 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

57
Michael Harper

Quand il s'agit d'insérer une image, la suggestion de r [2] de ![Caption for the picture.](/path/to/image.png) de r2evans peut poser problème si le résultat PDF est requis.

La fonction knitr include_graphicsknitr::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.

5
ms609

En mars, j'ai créé un deck présentation dans slidify, Rmarkdown avec impress.js , qui est un cadre 3D cool. mon index.Rmdheader 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 l'extrait de code d'arrière-plan serait dans mon .Rmd:

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

Certains problèmes sont apparus depuis mon dernier travail (les photos ne sont plus en arrière-plan, mais le texte est trop volumineux sur la parcelle R), mais cela fonctionne très bien chez moi. Les problèmes viennent quand je l'exécute sur RPubs.

4
brigasnuncamais