Рендеринг рчартов в слайдах из Slidify
Недавно я экспериментировал с slidify
а также rCharts
, Учебные пособия по созданию простых диаграмм при использовании slidify носят пояснительный характер, но я не смог найти ни одного такого учебного пособия по rCharts.
Например, я знаю, что следующее генерирует интерактивный сюжет
data(mtcars)
r1<- rPlot(mpg ~ wt | am + vs, data=mtcars, type="point")
data(iris)
hair_eye = as.data.frame(HairEyeColor)
rPlot(Freq ~ Hair | Eye,color = 'Eye', data = hair_eye, type = 'bar')
Тем не менее, я понятия не имею, как включить полученный график в мои слайды, используя slidify
,
РЕДАКТИРОВАТЬ - После полезного комментария
Я попробовал следующее, увидев это на мерзавце Рамната:
---
title : Practice
subtitle : makes perfect
author : Noob
job :
framework : io2012 # {io2012, html5slides, shower, dzslides, ...}
highlighter : highlight.js # {highlight.js, prettify, highlight}
hitheme : tomorrow #
widgets : [nvd3] # {mathjax, quiz, bootstrap}
mode : selfcontained # {standalone, draft}
---
```{r setup, message = F, echo = F}
require(rCharts)
options(RCHART_WIDTH = 800, RCHART_HEIGHT = 500)
knitr::opts_chunk$set(comment = NA, results = 'asis', tidy = F, message = F)
```
## NVD3 Scatterplot
```{r echo = F}
data(mtcars)
n1 <- nPlot(mpg ~ wt, group = 'gear', data = mtcars, type = 'scatterChart')
n1$print('chart1')
```
Но в конечном итоге с этой ошибкой:
Error in file(con, "r") : cannot open the connection
In addition: Warning message:
In file(con, "r") :
cannot open file 'libraries/widgets/nvd3/nvd3.html': No such file or directory
После чего я решил скопировать папку nvd3 из виджетов Рамната прямо в мою, надеясь, что это решит проблему. Однако, это закончилось сумасшедшим показом страницы мерзости Рамната, а также моих слайдов на заднем плане!
Что делать? Я был бы очень признателен за любые рекомендации / указатели / советы о том, как выполнить эту задачу. И я надеюсь, что этот вопрос поможет другим новичкам, таким как я, в использовании замечательных рчартов.
Примечание: я использую стандартный редактор для R, а не R-studio. Я чувствую, что первое менее загромождено.
1 ответ
Все инструкции ниже предполагают, что у вас есть dev
ветка установленных пакетов (slidify, slidifyLibraries и rCharts). Вы можете сделать это с помощью install_github
,
pkgs <- c("slidify", "slidifyLibraries", "rCharts")
devtools::install_github(pkgs, "ramnathv", ref = "dev")
Есть два способа включить rCharts
а именно в вашем слайд-документе, и колода ниже иллюстрирует оба способа. Если вы печатаете график в фрагменте кода, как вы это делаете в консоли R, slidify автоматически обнаруживает, что вы запускаете его в сеансе knitr, и в результате сохраняет полученный HTML-код в iframe и встраивает его в деку. В качестве альтернативы вы можете указать встроенную диаграмму, в этом случае вы должны использовать n1$show("inline")
а также включить ext_widgets: {rCharts: libraries/nvd3}
в твоем вопросе о YAML.
Метод iframe является стандартным и рекомендуемым методом, чтобы избежать конфликтов между различными файлами javascript и css. Встроенный метод хорошо работает для нескольких библиотек rCharts, но обязательно проверьте перед использованием.
---
title : rCharts Integration
ext_widgets : {rCharts: libraries/nvd3}
mode: selfcontained
---
## NVD3 Plot Inline
```{r nvd3plot, results = 'asis', comment = NA, message = F, echo = F}
require(rCharts)
n1 <- nPlot(mpg ~ wt, data = mtcars, type = 'scatterChart')
n1$show('inline')
```
---
## NVD3 Plot Iframe
```{r nvd3plot2, results = 'asis', comment = NA, message = F, echo = F}
require(rCharts)
n1 <- nPlot(mpg ~ wt, data = mtcars, type = 'scatterChart')
n1
```