Рендеринг рчартов в слайдах из 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
```
Другие вопросы по тегам