【问题标题】:Render rCharts in slides from Slidify在 Slidify 的幻灯片中渲染 rCharts
【发布时间】:2013-08-25 19:23:04
【问题描述】:

最近我一直在尝试slidifyrCharts。使用 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 将结果图合并到我的幻灯片中。

编辑 - 在有用的评论之后

我尝试了以下方法,在 Ramnath 的 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

之后,我决定将 Ramnath 的小部件中的 nvd3 文件夹直接复制到我的文件夹中,希望这能解决问题。然而,这最终在后台疯狂地显示了 Ramnath 的 git 页面以及我的幻灯片!

怎么办?我非常感谢任何有关如何完成此任务的指南/指针/建议。而且,我希望这个问题能帮助像我这样的其他新手使用精彩的 rCharts。

注意:我使用的是 R 的标准编辑器,而不是 R-studio。我觉得前者不那么杂乱。

【问题讨论】:

  • 我假设这是一个 R 块。您是否尝试过块选项 results='asis'?
  • 感谢您的评论。不,我没有。但不幸的是,我什至不知道如何尝试 results="asis"。我正在做的是生成 r1,然后使用 slidify 将生成 r1 的代码块简单地粘贴到我的幻灯片中。我的假设是,来自 rCharts 的图可以以与来自 ggplot2 的静态图相同的方式包含到幻灯片中。这是我的第一次尝试,第二次是我只是将 r1 的脚本粘贴到我的幻灯片中......我完全是菜鸟,抱歉。
  • 在有用的评论之后应用编辑。
  • 还有两件事。尝试安装 slidifyLibraries (library(devtools);install_github("slidifyLibraries", "ramnathv"))。然后在您的 Rmd 文件 (slidify("myrmdfile.Rmd")) 上运行 slidify。
  • 再次感谢。完毕。实际上,为了安全起见,我使用 install_github("slidify","ramnathv", ref="dev") 安装了最新的 slidify + 库。现在,我可以看到图表下方的脚本以其原始形式显示。

标签: r rcharts slidify


【解决方案1】:

以下所有说明均假定您已安装软件包的 dev 分支(slidify、slidifyLibraries 和 rCharts)。您可以使用install_github 完成此操作。

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

有两种方法可以在您的 slidify 文档中包含 rCharts 即,下面的卡片组说明了这两种方法。如果您在代码块中打印绘图,就像在 R 控制台中那样,slidify 会自动检测到您正在 knitr 会话中运行它,因此将生成的 html 保存到 iframe 并将其嵌入到卡组中。或者,您可以指定内联图表,在这种情况下,您必须使用 n1$show("inline") 并在 YAML 前端内容中包含 ext_widgets: {rCharts: libraries/nvd3}

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
```

【讨论】:

  • 谢谢你,教授。这解决了问题。只是为了调试以便我可以熟悉 slidify,我认为这是由于缺少 nvd3 小部件,不是吗?我已经包含了小部件:[nvd3],但小部件中仍然有一个空的 nvd3 文件夹。只有在将语法更改为您的语法后,我才看到填充了 nvd3。这是修改 ext_widgets: {rCharts: libraries/nvd3} 的原因吗?
  • 你是绝对正确的。我修改了外部小部件的语法以避免重复库。早些时候,我必须将所有 rCharts 库复制到 slidifyLibraries 以便它们可以用作小部件。但这意味着让它们保持同步,也意味着重复。 ext_widgets 允许从任何包中使用小部件。
  • 太棒了!最后一个问题,之后我将复制您对我在 GIT 上的问题的回答,以方便其他用户:如果我们需要导入多个小部件,我们应该如何在代码中指定它?
  • 您可以像这样指定它ext_widgets: {rCharts: [libraries/nvd3, libraries/leaflet]}. For regular widgets, you can specify it as widgets: [widget1, widget2, widget3]`。本质上它是一个 YAML 数组。
猜你喜欢
  • 1970-01-01
  • 2015-09-04
  • 2014-04-29
  • 1970-01-01
  • 2020-08-15
  • 2020-05-11
  • 1970-01-01
  • 2019-08-12
  • 2015-05-05
相关资源
最近更新 更多