Insertar imagen / tabla en R Markdown


132

Así que quiero insertar una tabla Y una imagen en R Markdown. En un documento de Word normal, puedo insertar fácilmente una tabla (5 filas por 2 columnas), y para la imagen simplemente copiar y pegar.

  1. ¿Cómo inserto una tabla de 5 filas por 2 columnas (y también escribo cosas en ellas) (y también ajusto la tabla en términos de que la segunda columna sea más ancha que la primera)?

  2. ¿Cómo inserto una imagen? Según tengo entendido, primero debería guardar la imagen como png, luego hacer referencia a ella en mi documento. Además, quiero ajustar automáticamente la imagen al informe, como no ocupar más de una página o menos de una página (¿Hay alguna forma de ajustar el tamaño de la imagen a mi gusto)?

  3. Si alguien sabe algo genial / formateo sobre R Markdown, ¿también podría informarme? Sé que eso #es un gran título para un párrafo y ** **pone en negrita las cosas. ¡Eso es todo lo que sé!


¡Descubrí cómo agregar tablas! Todavía me pregunto acerca de las fotos ._.
user3784616

Respuestas:


152

Varios sitios proporcionan hojas de trucos razonables o COMO para tablas e imágenes. Los primeros en mi lista son:

Las imágenes son muy simples de usar, pero no ofrecen la capacidad de ajustar la imagen para que se ajuste a la página (ver Actualización , más abajo). Para ajustar las propiedades de la imagen (tamaño, resolución, colores, borde, etc.), necesitará algún tipo de editor de imágenes. Creo que puedo hacer todo lo que necesito con uno de ImageMagick , GIMP o InkScape , todo de código libre y abierto.

Para agregar una imagen, use:

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

Sé que Pandoc es compatible con PNG y JPG, que debería satisfacer la mayoría de sus necesidades.

Usted tiene control sobre el tamaño de la imagen si la está creando en R (por ejemplo, un diagrama). Esto se puede hacer directamente en el comando para crear la imagen o, mejor aún, a través de opciones si está usando knitr (muy recomendable ... verifique las opciones de fragmentos , específicamente en Plots).

Recomiendo leer estos tutoriales; Markdown es muy útil y tiene muchas características que la mayoría de las personas no usan de forma regular, pero realmente les gusta una vez que lo aprenden. (SO no es necesariamente el mejor lugar para hacer preguntas que se responden muy directamente en estos tutoriales).


Actualización, 31 de agosto de 2019

Hace algún tiempo, pandocincorporó "link_attributes" para imágenes (aparentemente en 2015, con commit jgm / pandoc # 244cd56 ). "Cambiar el tamaño de las imágenes" se puede hacer directamente. Por ejemplo:

![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%}

Las dimensiones pueden estar provistos de ninguna unidad (píxeles asumieron), o con " , , , y "pxcmmmininch% (ref: https://pandoc.org/MANUAL.html , buscar link_attributes).

(No estoy seguro de que CommonMark haya implementado esto, aunque hubo una larga discusión ).


Si todavía estás leyendo esto, sobre la imagen. ¿Puedo abrir el archivo Rmarkdown nuevamente en otra computadora sin la imagen? ¿La imagen es permanente una vez que la agrego a R? Si no cómo lo hago permanente
user3784616

3
El archivo no es permanente dentro del .Rmdarchivo. Si lo "compila" (usando pandoc) en HTML, la adición --self-containedcodificará la imagen en el archivo html. Los archivos PDF y Word lo tendrán como parte del archivo, por lo que no necesitará incluir el archivo PNG real cuando lo envíe. Sin embargo, los archivos Rmd requieren que incluya el archivo de imagen manualmente.
r2evans

como funciona..? Parece que ni siquiera puedo agregar la imagen. Básicamente, la imagen se llama "Tasas de empleo" y está en una carpeta llamada "Resumen". La ubicación del archivo es C: \ Users \ Paul \ Desktop \ Summary. ¡Entonces el código que escribí es! [Tasas de empleo.] (C: /Users/Paul/Desktop.Summary.png) y no funciona
user3784616

¿Me puede dar un ejemplo de cómo usar el autocontenido? Entonces, cuando lo guardo como un documento de Word, ¿tendrá permanentemente la imagen? Todavía estoy un poco confundido
user3784616

Mejor aún, usarlo dentro del encabezado YAML del Rmd es más sencillo (y el valor predeterminado, aparentemente). Aquí está la referencia: rmarkdown en rstudio . Más de 1/3 del camino hacia abajo es una sección sobre "Dependencias de documentos" que aborda su uso.
r2evans

87

Actualización : desde la respuesta de @ r2evans, es mucho más fácil insertar imágenes en R Markdown y controlar el tamaño de la imagen.

Imágenes

El libro bookdown hace un gran trabajo al explicar que la mejor manera de incluir imágenes es mediante el uso include_graphics(). Por ejemplo, una imagen de ancho completo se puede imprimir con un título debajo:

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

La razón por la cual este método es mejor que el enfoque de pandoc ![your image](path/to/image):

  • Cambia automáticamente el comando en función del formato de salida (HTML / PDF / Word)
  • Se puede usar la misma sintaxis para el tamaño de la gráfica ( fig.width), el ancho de salida en el informe ( out.width), agregar títulos ( fig.cap), etc.
  • Utiliza los mejores dispositivos gráficos para la salida. Esto significa que las imágenes PDF siguen siendo de alta resolución.

Mesas

knitr::kable()es la mejor manera de incluir tablas en un informe de R Markdown como se explica completamente aquí . Nuevamente, esta función es inteligente al seleccionar automáticamente el formato correcto para la salida seleccionada.

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

Si desea crear sus propias tablas simples en R Markdown y está utilizando R Studio, puede consultar el insert_table paquete . Proporciona una interfaz gráfica ordenada para hacer tablas.

Lograr un estilo personalizado del ancho de columna de la tabla está fuera del alcance de knitr, pero el kableExtrapaquete se ha escrito para ayudar a lograr esto: https://cran.r-project.org/web/packages/kableExtra/index.html

Consejos de estilo

La hoja de trucos de R Markdown sigue siendo el mejor lugar para aprender sobre la mayoría de la sintaxis básica que puede usar.

Si está buscando posibles extensiones para el formato, bookdowntambién vale la pena explorar el paquete. Proporciona la capacidad de hacer referencias cruzadas, crear encabezados especiales y más: https://bookdown.org/yihui/bookdown/markdown-extensions-by-bookdown.html


Excelente solucion!
Marcus Nunes

¿Sabes cómo bloquear la ubicación de la imagen en su lugar? En este momento es muy difícil predecir dónde aparecerá cuando lo compile.
wolfsatthedoor 01 de

1
Estaba luchando con el ![image caption](\path\to\image.png)intento de insertar una imagen en R Markdown renderizado .docx, pero fallé misteriosamente, hasta que vi su knitr::include_graphics()solución hoy. Muchas gracias!
Elarry

5

Cuando se trata de insertar una imagen, la sugerencia de r2evans ![Caption for the picture.](/path/to/image.png)puede ser problemática si se requiere salida en PDF.

La función knitr include_graphics knitr::include_graphics('/path/to/image.png') es una alternativa más portátil que generará, en su nombre, el descuento más apropiado para el formato de salida que está generando.


Curioso ... ¿por qué el uso de ![caption](path/to/image.png)problemático si se requiere salida PDF? Quizás esta respuesta está desactualizada (como era mi respuesta original), pero he estado usando esto en la salida de PDF durante al menos un par de años.
r2evans

4

En marzo hice una presentación de mazo en slidify, Rmarkdown con impress.js, que es un marco 3D genial. mi index.Rmdencabezado parece

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

los subdirs son:

/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

una diapositiva con imagen en el fragmento de código de fondo estaría en mi .Rmd:

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

Algunos problemas aparecieron desde la última vez que trabajé en él (las fotos ya no están en segundo plano, el texto es demasiado grande en mi diagrama R) pero funciona bien en mi local. Los problemas surgen cuando lo ejecuto en RPubs.


2
Si tiene una nueva pregunta, hágala haciendo clic en el botón Hacer pregunta . Incluya un enlace a esta pregunta si ayuda a proporcionar contexto.
Jaap

8
esto no fue una pregunta, fue una respuesta :-)
brigasnuncamais

2
El primer enlace está roto.
daknowles
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.