Рендеринг rCharts в слайдах из 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.

EDIT – после полезного комментария

Я попробовал следующее, увидев это на git Рамната:

---
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 из виджетов Рамната прямо в свою, надеясь, что это решит вопрос. Однако в итоге это привело к безумному показу git-страницы Рамната, а также моих слайдов в фоновом режиме!

Что делать? Я был бы очень признателен за любые рекомендации/указатели/советы о том, как выполнить эту задачу. И я надеюсь, что этот вопрос поможет другим новичкам, таким как я, в использовании замечательного rCharts.

Примечание. Я использую стандартный редактор для R, а не R-studio. Я чувствую, что первый менее загроможден.


person info_seekeR    schedule 22.08.2013    source источник
comment
Я предполагаю, что это в блоке R. Вы пробовали вариант чанка results='asis'?   -  person sebastian-c    schedule 23.08.2013
comment
Спасибо за ваш комментарий. Нет, я не видел. Но, к сожалению, я даже не знаю, как попробовать results=asis. Что я делаю, так это то, что я генерирую r1, а затем просто вставляю блок кода, который сгенерировал r1, в свои слайды с помощью slidify. Мое предположение заключалось в том, что графики из rCharts можно включать в слайды так же, как статические графики, скажем, из ggplot2. Это была моя первая попытка, вторая заключалась в том, что я просто вставил сценарий для r1 в свой слайд... Я полный нуб, извините.   -  person info_seekeR    schedule 23.08.2013
comment
Изменение применено после полезного комментария.   -  person info_seekeR    schedule 23.08.2013
comment
Еще две вещи. Попробуйте установить slidifyLibraries (library(devtools);install_github("slidifyLibraries", "ramnathv")). Затем запустите slidify для вашего файла Rmd (slidify("myrmdfile.Rmd")).   -  person sebastian-c    schedule 23.08.2013
comment
Спасибо еще раз. Готово. На самом деле, чтобы быть в безопасности, я установил последние библиотеки slidify +, используя install_github (slidify, ramnathv, ref=dev). Теперь я вижу, как скрипт под диаграммой отображается в необработанном виде.   -  person info_seekeR    schedule 23.08.2013
comment
Это решает все ваши проблемы? Мне написать это как ответ?   -  person sebastian-c    schedule 23.08.2013
comment
Прошу прощения, я не совсем правильно выразился. Проблема все еще существует: невозможно создать rChart в слайдах. Что происходит сейчас, так это то, что я вижу сценарий для rChart (а это не то, что мне нужно). Так что я все еще пытаюсь сделать несколько реальных сюжетов.   -  person info_seekeR    schedule 23.08.2013


Ответы (1)


Все приведенные ниже инструкции предполагают, что у вас установлена ​​ветвь пакетов dev (slidify, slidifyLibraries и rCharts). Вы можете сделать это, используя install_github.

pkgs <- c("slidify", "slidifyLibraries", "rCharts")
devtools::install_github(pkgs, "ramnathv", ref = "dev")

Есть два способа включить визуализацию rCharts в ваш документ slidify, и колода ниже иллюстрирует оба способа. Если вы печатаете график в фрагменте кода, как вы бы сделали это в консоли 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
```
person Ramnath    schedule 23.08.2013
comment
Спасибо, профессор. Это решило проблему. Просто для отладки, чтобы я мог ознакомиться со slidify, я думаю, это было из-за отсутствия виджета nvd3, не так ли? Я включил виджеты: [nvd3], но все еще имел пустую папку nvd3 в виджетах. Только после изменения синтаксиса на ваш я вижу, что nvd3 заполнен. Является ли это причиной модифицированных ext_widgets: {rCharts: library/nvd3}? - person info_seekeR; 23.08.2013
comment
Ты абсолютно прав. Я изменил синтаксис для внешних виджетов, чтобы избежать дублирования библиотек. Раньше мне приходилось копировать все библиотеки rCharts в slidifyLibraries, чтобы их можно было использовать как виджеты. Но это означало их синхронизацию, а также дублирование. ext_widgets позволяет использовать виджеты из любого пакета. - person Ramnath; 23.08.2013
comment
Большой! И только один последний вопрос, после которого я скопирую ваши ответы на мой вопрос в GIT для других пользователей: если нам нужно импортировать несколько виджетов, как мы должны указать это в нашем коде? - person info_seekeR; 23.08.2013
comment
Вы можете указать это так: ext_widgets: {rCharts: [libraries/nvd3, libraries/leaflet]}. For regular widgets, you can specify it as widgets: [widget1, widget2, widget3]`. По сути, это массив YAML. - person Ramnath; 23.08.2013