Как установить размер для локального изображения с помощью knitr для уценки?
У меня есть локальное изображение, которое я хотел бы включить в файл .Rmd
, который я затем knit
и конвертирую в слайды HTML с Pandoc
. Per этот пост, это добавит местное изображение:

Есть ли способ изменить этот код, чтобы установить размер изображения?
Ответы
Ответ 1
Вы также можете прочитать изображение с помощью пакета png
, например, и построить его как обычный график, используя grid.raster
из пакета grid
.
```{r fig.width=1, fig.height=10,echo=FALSE}
library(png)
library(grid)
img <- readPNG("path/to/your/image")
grid.raster(img)
```
С помощью этого метода вы полностью контролируете размер изображения.
Ответ 2
Вопрос старен, но все равно получает много внимания. Поскольку существующие ответы устарели, здесь представлено более современное решение:
Изменение размера локальных изображений
В knitr
1.12 существует функция include_graphics
. Из ?include_graphics
(выделено мной):
Основным преимуществом использования этой функции является то, что она переносима в том смысле, что она работает для всех форматов документов, поддерживаемых knitr
, поэтому вам не нужно думать, если вам нужно использовать, например, LaTeX или Markdown синтаксис, чтобы встроить внешний образ. Для этих изображений также работают функции блоков, связанные с графическим выходом, которые работают для нормальных графиков R, например out.width
и out.height
.
Пример:
```{r, out.width = "400px"}
knitr::include_graphics("path/to/image.png")
```
Преимущества:
- Более ответ agastudy: нет необходимости в внешних библиотеках или для повторного растрирования изображения.
- Ответ Shruti Kapoor: Не нужно вручную писать HTML. Кроме того, изображение включено в автономную версию файла.
Включая сгенерированные изображения
Чтобы составить путь к сюжету, который генерируется в куске (но не включен), могут быть полезны опции chunk opts_current$get("fig.path")
(путь к каталогу рисунков), а также opts_current$get("label")
(метка текущего фрагмента). В следующем примере используется fig.path
для включения второго из двух изображений, которые были сгенерированы (но не показаны) в первом фрагменте:
```{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")))
```
Общий шаблон путей рисунка [fig.path]/[chunklabel]-[i].[ext]
, где chunklabel
- это метка фрагмента, в котором был создан график, i
- это индекс сюжета (внутри этого фрагмента), а ext
- файл расширение (по умолчанию png
в документах RMarkdown).
Ответ 3
Вот некоторые параметры, которые сохраняют файл автономно без повторной настройки изображения:
Оберните изображение в теги div
<div style="width:300px; height=200px">

</div>
Используйте таблицу стилей
test.Rmd
---
title: test
output: html_document
css: test.css
---
## Page with an image {#myImagePage}

test.css
#myImagePage img {
width: 400px;
height: 200px;
}
Если у вас есть несколько изображений, вам может понадобиться использовать псевдо-селектор nth-child для этого второго варианта.
Ответ 4
Если вы конвертируете в HTML, вы можете установить размер изображения с помощью синтаксиса HTML, используя:
<img src="path/to/image" height="400px" width="300px" />
или любой высоты и ширины, которые вы хотели бы дать.
Ответ 5
Un обновленный ответ: в knitr 1.14
вы можете просто использовать
{width=250px}
Ответ 6
Решение knitr:: includes_graphics хорошо работало для изменения размеров фигур, но мне не удалось выяснить, как использовать его для создания уменьшенных размеров. Я нашел этот пост, полезный для этого.
Ответ 7
Имел ту же самую проблему сегодня и нашел еще один вариант с knitr 1.16
при вязании в PDF (для этого требуется, чтобы вы установили pandoc):
{width=70%}
Этот метод может потребовать, чтобы вы выполнили несколько проб и ошибок, чтобы найти размер, который работает для вас. Это особенно удобно, потому что он делает два изображения бок о бок более красивым процессом. Например:
{width=70%}{width=30%}
Вы можете получить креатив и собрать пару из них рядом и размер их, как вы сочтете нужным. См. https://rpubs.com/RatherBit/90926 для получения дополнительных идей и примеров.