【问题标题】:Are rCharts and DT compatible in rmarkdown?rmarkdown 中的 rCharts 和 DT 是否兼容?
【发布时间】:2015-05-13 10:55:58
【问题描述】:

我正在尝试使用 rmarkdown 创建一个文档,其中包括 rCharts 包中的图和使用 htmlwidgets 中包含的 DT 库的数据表。 由于某种原因,我无法同时显示它们。

---
title: "Untitled"
output: html_document
---

```{r, echo=FALSE}
library(DT)
library(rCharts)

df<-data.frame(Name=c("a","Z","h","k","j"),Value=(sample(10^7,5)))

datatable(df, filter = 'top', options = list(
  pageLength = 10,iDisplaylength=10, autoWidth = TRUE
))
```

```{r, message=FALSE, echo=FALSE, results='asis'}
df<-data.frame(label=c("One","Two","Three"),valuea=c(1,2,3),
               othera=c(10,11,12),stringsAsFactors = FALSE)
p1 <- nPlot(valuea~ label, data = df, type = 'pieChart')

#Different options I tried

p1$print('inline', include_assets = TRUE, cdn = FALSE)
#p1$show('inline', include_assets = TRUE, cdn = FALSE)

#p1$print('inline', include_assets = TRUE)
#p1$show('inline', include_assets = TRUE)

#These provide an error
#p1$print('inline', include_assets = TRUE, cdn = TRUE)
#p1$show('inline', include_assets = TRUE, cdn = TRUE)

```

注释行是我尝试过的东西。

注意 I:如果注释了 p1$print('inline', include_assets = TRUE, cdn = FALSE),则数据表将正确显示。

注意二:我知道 p1$save() 函数与 iframe 结合使用,但是,我想使用内联图表。

【问题讨论】:

  • 好问题。一般来说,在未来,使用htmlwidgets 会比使用rCharts 好得多。饼图有几个不错的选择。
  • 最近,我经常直接使用 javascript 库来编写工作报告。无论如何,像 htmlwidgets 和 rmarkdown 这样的库为 r 分析师提供了很多可能性(尤其是当您时间紧迫时),并且它们在过去几年中的发展令人惊叹。我不能失去这个机会来感谢您在构建小工具方面所做的巨大努力,我使用的很少,但它们给了我很多见识。这种无私的努力很难看到,我想表达我的感激之情。
  • 很高兴听到,如果我能提供任何帮助,请告诉我

标签: r r-markdown rcharts


【解决方案1】:

jQuery 库包含在页面顶部,当您将 include_assets 包含在 print 中时,它会再次被包含,这会导致问题。

要解决此问题,您可以尝试将include_assets 设置为 false 并“手动”添加除 jQuery 之外的所需库。

 p1 <- nPlot(valuea~ label, data = df, type = 'pieChart')
    cat("<link rel='stylesheet' href=.../R/3.1/library/rCharts/libraries/nvd3/css/nv.d3.css>
    <link rel='stylesheet' href=.../R/3.1/library/rCharts/libraries/nvd3/css/rNVD3.css>
    <script type='text/javascript' src=.../R/3.1/library/rCharts/libraries/nvd3/js/d3.v3.min.js></script>
    <script type='text/javascript' src=.../R/3.1/library/rCharts/libraries/nvd3/js/nv.d3.min-new.js></script>
    <script type='text/javascript' src=.../R/3.1/library/rCharts/libraries/nvd3/js/fisheye.js></script> ")
    p1$print('inline', include_assets = F, cdn = FALSE)

您可以通过在 R 中运行 p1$print('inline', include_assets = T, cdn = FALSE) 找到所需的库和链接,它们将是输出的第一行。 src 路径是绝对的,所以我在上面的代码中用 ... 替换了其中的一些。

【讨论】:

  • 我永远不会想到这种解决方案,非常感谢。我相信我们有一个赏金赢家。
  • 我试过p1$print('inline', include_assets = F, cdn = FALSE)p1$show('inline', include_assets = F, cdn = FALSE)p1p1$show()p1$print(),但没有一个对我有用。 rpubs.com/englianhu/Milestone-Report
  • 您好,我正在尝试您在 flexdashboard 上提供的解决方案。我得到的唯一输出是菜单。其他一切都是空的。知道可能是什么问题吗?
猜你喜欢
  • 2015-06-02
  • 2013-06-06
  • 2020-06-26
  • 1970-01-01
  • 2017-03-28
  • 2011-04-15
  • 2018-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多