Вставить изображение / таблицу в R Markdown

135

Итак, я хочу вставить таблицу И изображение в R Markdown. В обычный текстовый документ я могу просто вставить таблицу (5 строк на 2 столбца), а для изображения просто скопировать и вставить.

  1. Как мне вставить таблицу из 5 строк на 2 столбца (а также ввести в них информацию) (а также настроить таблицу с учетом того, чтобы второй столбец был шире первого)?

  2. Как мне вставить картинку? Насколько я понимаю, я должен сначала сохранить изображение как png, а затем сослаться на него в своем документе. Кроме того, я хочу автоматически настроить изображение в соответствии с отчетом, например, не занимать больше страницы или меньше страницы (есть ли способ настроить размер изображения по своему вкусу)?

  3. Если кто-нибудь знает что-нибудь интересное / форматирование о R Markdown, не могли бы вы также сообщить мне? Я знаю, что это #делает заголовок большим для абзаца и ** **выделяет вещи жирным шрифтом. Но это все, что я знаю!

user3784616
источник
Я узнал, как добавлять таблицы! Еще интересуюсь фотками ._.
user3784616 06
см. также stackoverflow.com/questions/15625990/…
baptiste

Ответы:

154

Некоторые сайты предоставляют разумные шпаргалки или HOWTO для таблиц и изображений. Первые в моем списке:

Изображения очень просты в использовании, но не дают возможности подогнать изображение под размер страницы (см. « Обновление» ниже). Чтобы настроить свойства изображения (размер, разрешение, цвета, границу и т. Д.), Вам понадобится какой-нибудь редактор изображений. Я считаю, что могу делать все, что мне нужно, с помощью ImageMagick , GIMP или InkScape , все бесплатно и с открытым исходным кодом.

Чтобы добавить картинку, используйте:

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

Я знаю, что pandoc поддерживает PNG и JPG, что должно удовлетворить большинство ваших потребностей.

У вас есть контроль над размером изображения, если вы создаете его в R (например, сюжет). Это можно сделать либо непосредственно в команде создания изображения, либо, что еще лучше, с помощью параметров, если вы используете knitr (настоятельно рекомендуется ... проверьте параметры фрагментов , в частности, в разделе «Графики»).

Я настоятельно рекомендую ознакомиться с этими руководствами; markdown очень удобен и имеет множество функций, которые большинство людей не используют на регулярной основе, но им очень нравится, когда они его изучат. (SO - не обязательно лучшее место, чтобы задавать вопросы, ответы на которые прямо даются в этих руководствах.)


Обновление, 31 августа 2019 г.

Некоторое время назад pandocдля изображений были добавлены атрибуты link_attributes (очевидно, в 2015 году с фиксацией jgm / pandoc # 244cd56 ). «Изменение размера изображения» можно сделать напрямую. Например:

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

Размеры могут быть обеспечены без единиц измерения (пиксели предполагается), или с помощью « , , , и »pxcmmmininch% (Ref: https://pandoc.org/MANUAL.html , поиска link_attributes).

(Я не уверен, что CommonMark реализовал это, хотя обсуждение было продолжительным .)

r2evans
источник
Если вы все еще это читаете, по поводу картинки. Могу ли я снова открыть файл Rmarkdown на другом компьютере без изображения? Будет ли изображение постоянным после добавления его в R? Если не как сделать его постоянным
user3784616 06
3
Файл не является постоянным в .Rmdфайле. Если вы "скомпилируете" его (используя pandoc) в HTML, добавление закодирует --self-containedизображение в файл html. Файлы PDF и Word будут иметь его как часть файла, поэтому вам не нужно будет включать фактический файл PNG при его отправке. Однако файлы Rmd требовали включения файла изображения вручную.
r2evans 06
как это работает..? Кажется, я даже не могу добавить картинку ... Так что в основном картина называется «Уровень занятости» и находится в папке с файлами под названием «Сводка». Расположение файла: C: \ Users \ Paul \ Desktop \ Summary. Итак, код, который я написал, - это! [Уровень занятости.] (C: /Users/Paul/Desktop.Summary.png), и он не работает
user3784616
можете ли вы привести мне пример того, как использовать --самостоятельный? Итак, когда я сохраню его как документ Word, изображение будет постоянно? Я все еще немного запутался
user3784616 06
А еще лучше использовать его в заголовке YAML Rmd (и, по-видимому, по умолчанию). Вот ссылка: rmarkdown на rstudio . Более 1/3 части ниже - это раздел «Зависимости документов», в котором рассматривается его использование.
r2evans 06
88

Обновление : после ответа от @ r2evans намного проще вставлять изображения в R Markdown и контролировать размер изображения.

Изображений

Bookdown книга делает большую работу, объясняя , что лучший способ , чтобы включить изображения является использование include_graphics(). Например, изображение в полную ширину можно напечатать с подписью ниже:

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

Причина, по которой этот метод лучше, чем подход pandoc ![your image](path/to/image) :

  • Он автоматически изменяет команду в зависимости от формата вывода (HTML / PDF / Word)
  • Тот же синтаксис можно использовать для размера графика ( fig.width), ширины вывода в отчете ( out.width), добавления подписей ( fig.cap) и т. Д.
  • Для вывода используются лучшие графические устройства. Это означает, что изображения PDF остаются в высоком разрешении.

таблицы

knitr::kable()- лучший способ включить таблицы в отчет R Markdown, как подробно описано здесь . Опять же, эта функция интеллектуальна в автоматическом выборе правильного форматирования для выбранного вывода.

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

Если вы хотите создавать свои собственные простые таблицы в R Markdown и используете R Studio, вы можете ознакомиться с insert_table пакетом . Он предоставляет удобный графический интерфейс для создания таблиц.

Достижение индивидуального стиля ширины столбца таблицы выходит за рамки возможностей knitr, но kableExtraпакет был написан для этого: https://cran.r-project.org/web/packages/kableExtra/index.html

Советы по стилю

Шпаргалка R Markdown еще лучшее место , чтобы узнать о наиболее базовый синтаксис , который вы можете использовать.

Если вы ищете возможные расширения форматирования, этот bookdownпакет также стоит изучить. Он предоставляет возможность делать перекрестные ссылки, создавать специальные заголовки и многое другое: https://bookdown.org/yihui/bookdown/markdown-extensions-by-bookdown.html

Майкл Харпер
источник
Отличное решение!
Маркус Нуньес
Вы знаете, как зафиксировать местоположение изображения на месте? Сейчас очень сложно предсказать, где он появится, когда я его скомпилирую.
wolfsatthedoor 01
1
Я боролся с ![image caption](\path\to\image.png)попыткой вставить изображение в R Markdown, обработанный .docx, но загадочно потерпел неудачу, пока я не увидел ваше knitr::include_graphics()решение сегодня. Спасибо вам большое!
elarry 03
5

Когда дело доходит до вставки изображения, предложение r2evans ![Caption for the picture.](/path/to/image.png)может быть проблематичным, если требуется вывод PDF.

Функция knitr include_graphics knitr::include_graphics('/path/to/image.png') - это более переносимая альтернатива, которая будет генерировать от вашего имени уценку, наиболее соответствующую формату вывода, который вы создаете.

ms609
источник
Любопытно ... почему ![caption](path/to/image.png)проблематично использовать PDF, если требуется вывод? Возможно, этот ответ устарел (как и мой первоначальный ответ), но я использовал его в выводе PDF как минимум пару лет.
r2evans
4

В марте я сделал презентацию колоды в slidify, Rmarkdown с Impress.js, который представляет собой крутой трехмерный фреймворк. мой index.Rmdзаголовок выглядит как

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

подкаталоги:

/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

слайд с изображением в фрагменте кода фона будет в моем .Rmd:

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

Некоторые проблемы возникли с тех пор, как я последний раз работал над ним (фотографии больше не в фоновом режиме, текст слишком велик на моем графике R), но он отлично работает на моем локальном. Проблемы возникают, когда я запускаю его на RPubs.

brigasnuncamais
источник
2
Если у вас есть новый вопрос, задайте его, нажав кнопку « Задать вопрос» . Включите ссылку на этот вопрос, если она помогает понять контекст.
Jaap
8
это был не вопрос, это был ответ :-)
brigasnuncamais
2
Первая ссылка не работает.
daknowles