Являются ли rCharts и DT совместимыми в rmarkdown?
Я пытаюсь создать документ с rmarkdown, который включает в себя как графики из пакета rCharts, так и datatable, используя библиотеку DT, включенную в htmlwidgets.
По какой-то причине я не могу отобразить их обоих вместе.
---
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)
, то datatable отображается правильно.
Примечание II: мне известно о функции p1 $save() в сочетании с iframe, однако я бы хотел использовать встроенную диаграмму.
Ответы
Ответ 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)
Вы можете найти необходимые библиотеки и ссылки, запустив p1$print('inline', include_assets = T, cdn = FALSE)
в R, они будут первыми строками вывода. Пути src
являются абсолютными, поэтому я заменил некоторые из них на ...
в приведенном выше коде.