Как включить сюжеты в новый движок - PullRequest
0 голосов
/ 31 октября 2018

Я пишу новый движок для knitr. Этот механизм может, в зависимости от входных данных, генерировать график как объект ggplot (список) или сохраненный в файле (.png). Я пытаюсь вывести изображение в файл html (pdf, md), созданный knitr, но не могу найти как.

Я пробовал:

  • include_graphics() с путем к файлу
  • возвращает объект ggplot в engine_output() функции
  • knit_print() со многими опциями

ничего не работает!

Вот код двигателя. Это движок для Ruby на GraalVM (Galaaz). Вызов GalaazUtil.exec_ruby выполнит код Ruby для того же R-процесса knitr и вернет out результат выполнения.

Когда в сгенерированном графике нет выходных данных ... как knitr идентифицирует, что график был сгенерирован в блоке R?

Теперь, если у меня есть доступ к сгенерированному изображению в файле, как мне сделать это шоу на моей html-странице knitr?

eng_ruby = function(options) {
  block_code = paste(options$code, collapse = "\\n");
  code = paste0("GalaazUtil.exec_ruby(", 
                   shQuote(block_code), 
                  ")
                ");
  out = eval.polyglot("ruby", code);
  engine_output(options, block_code, out)
}

Спасибо!

1 Ответ

0 голосов
/ 15 февраля 2019

См. Раздел «Подробности» на странице справки ?knitr::engine_output. Вы можете использовать knitr::include_graphics(). Вот игрушечный пример (включая логотип R):

```{r}
knitr::knit_engines$set(Rlogo = function(options) {
  path = 'logo.jpg'
  file.copy(file.path(R.home('doc'), 'html', 'logo.jpg'), path)
  knitr::engine_output(options, out = list(knitr::include_graphics(path)))
})
```

```{Rlogo}
Whatever.
```
...