rCharts和人力车:当数据表添加到我的网页时,滑块从人力车图表中消失

时间:2013-11-06 12:44:24

标签: r knitr rcharts rickshaw

我使用了令人惊叹的rCharts和knitr构建了一个网页。我的页面将人力车时间序列图表与滑块和数据表结合在一起。当我添加数据表时,所有滑块都会从我的人力车图表中消失。我尝试修改config.yml,以便我没有复制对相同资源的调用,但这并没有解决问题。任何想法都将是一个很大的帮助。下面是一个可重现的r-markdown文件,可以编织到带有knitr的html页面中。

```{r echo = F, message = T, cache = F}
require(rCharts)
opts_knit$set(self.contained=T)
knitr::opts_chunk$set(results = 'asis', tidy = F, message = T, echo=F, fig.width=700)
```

### Chart
```{r chart}
# add dummy date column to iris to make a time series chart
x <- cbind(iris, date=seq.Date(as.Date("2010-01-01"), length.out=nrow(iris), by=1))
x$date <- as.double(as.POSIXct(x$date,origin="1970-01-01"))
r2 <- Rickshaw$new()
r2$layer(
  Sepal.Length ~ date,
  data = x,
  type = "line",
  min = "auto"
)
r2$set(
  slider = TRUE,
  title = "IRIS",
  width = 700
)
r2$print('chart', include_assets=T, cdn=T)
```

### Table
```{r table}
r2 <- dTable(iris)
r2$print('table', include_assets=T, cdn=T)
```

1 个答案:

答案 0 :(得分:5)

出现此问题是因为jQuery被包含两次。快速解决方法是向knitr添加一个文档挂钩,删除重复jQuery的行。确保为此块设置cache = F,以便每次调用knitr时都会运行它。在将来的版本中,我会向jQuery添加print参数,以便您可以在页面上加载jQuery时将其关闭。

```{r cache = F}
library(knitr)
knit_hooks$set(document = function(doc){
  pat = "<script type='text/javascript' src=http://code.jquery.com/jquery-1.10.2.min.js></script>"
  gsub(pat, "", doc)
})
```