【问题标题】:HTML widget does not render in ioslides presentationHTML 小部件不会在 ioslides 演示文稿中呈现
【发布时间】:2017-07-14 12:38:27
【问题描述】:

在下面的 ioslides 演示文稿中,visNetwork 图表对我来说是空白的,但它使用 Slidy 和reveal.js 渲染得很好。我已经尝试了htmlwidgetsrmarkdown 的最新CRAN 和开发版本。

---
title: "slides"
output: ioslides_presentation
---

## The HTML widget should render.

```{r}
library(visNetwork, quietly = TRUE)
visNetwork(data.frame(id = 1:3), data.frame(from = c(1,2), to = c(1,3)))
```

我宁愿在我当前的演示文稿中坚持使用 ioslides,因为我需要一些不坚持显示.js 的自定义 CSS。

> sessionInfo()
R version 3.4.0 (2017-04-21)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Red Hat Enterprise Linux Server release 6.9 (Santiago)

Matrix products: default
BLAS: /opt/R/R-3.4.0/lib64/R/lib/libRblas.so
LAPACK: /opt/R/R-3.4.0/lib64/R/lib/libRlapack.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8       
 [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] devtools_1.13.2

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.11         revealjs_0.9         digest_0.6.12        withr_1.0.2         
 [5] rprojroot_1.2        R6_2.2.2             backports_1.1.0      git2r_0.18.0        
 [9] magrittr_1.5         evaluate_0.10        highr_0.6            httr_1.2.1          
[13] stringi_1.1.5        curl_2.6             rmarkdown_1.6.0.9001 tools_3.4.0         
[17] stringr_1.2.0        yaml_2.1.14          rsconnect_0.8        compiler_3.4.0      
[21] memoise_1.1.0        htmltools_0.3.6      knitr_1.16 

编辑 2019-05-12

@Esteban Moro,widgetframe 绝对有帮助。不过,至少在我这边,还有工作要做。下面,我展示了iotest.Rmd,它生成了一个空的iotest_files。有什么想法吗?

---
title: "slides"
output: ioslides_presentation
---

## The HTML widget should render.

```{r}
library(visNetwork, quietly = TRUE)
library(widgetframe)
frameWidget(visNetwork(data.frame(id = 1:3), data.frame(from = c(1,2), to = c(1,3))))
```

> sessionInfo()
R version 3.6.0 (2019-04-26)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.2 LTS

Matrix products: default
BLAS:   /home/landau/R/R-3.6.0/lib/libRblas.so
LAPACK: /home/landau/R/R-3.6.0/lib/libRlapack.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] widgetframe_0.3.1 htmlwidgets_1.3   visNetwork_2.0.6 

loaded via a namespace (and not attached):
 [1] compiler_3.6.0  magrittr_1.5    htmltools_0.3.6 tools_3.6.0    
 [5] yaml_2.2.0      Rcpp_1.0.1      rmarkdown_1.12  knitr_1.22     
 [9] jsonlite_1.6    xfun_0.6        digest_0.6.18   evaluate_0.13 

编辑 2019-05-13

我在 YAML 前面的问题中尝试了selfcontained: false,但小部件仍然没有出现。 selfcontained: true 的结果相同。

---
title: "slides"
output:
  ioslides_presentation:
    selfcontained: false
---

## The HTML widget should render.

```{r}
library(visNetwork, quietly = TRUE)
library(widgetframe)
frameWidget(visNetwork(data.frame(id = 1:3), data.frame(from = c(1,2), to = c(1,3))))
```

【问题讨论】:

  • 您的 sessionInfo() 没有 visNetwork 信息。但我可以确认我在带有 R 3.3.1 的 Windows 7 上看到了同样的问题
  • 谢谢,@Dason。我上次尝试 visNetwork 2.0.0。很抱歉没有将其包含在帖子中。
  • 不用担心。检查生成的 html 输出 is 在那里。为什么它不可见是另一个问题,我目前无法回答。
  • @landau,你有没有找到解决方案?我现在发生了完全相同的问题。谢谢,e。
  • 抱歉,我刚刚切换到revealjs,将我的小部件保存为 HTML 文件,然后将它们以 <iframe>s 的形式重新包含进来。笨重,但自动化。

标签: r r-markdown ioslides


【解决方案1】:

对于 ioslides,我使用 R 中的 widgetframe 库解决了它

library(visNetwork, quietly = TRUE)
library(widgetframe)
frameWidget(visNetwork(data.frame(id = 1:3), data.frame(from = c(1,2), to = c(1,3))))

编辑 05-15-2019

这是一个适用于我的最小示例:

---
title: "slides"
output: 
  ioslides_presentation:
    self_contained: FALSE
---

```{r setup, include=F}
knitr::opts_chunk$set(widgetframe_widgetsdir = 'widgets')
library(visNetwork, quietly = TRUE)
library(widgetframe)
```


## The HTML widget should render.
```{r}
frameWidget(visNetwork(data.frame(id = 1:3), 
                       data.frame(from = c(1,2), to = c(1,3))))
```

【讨论】:

  • 谢谢!请参阅 OP 中的编辑。仍然对我不起作用,但该错误似乎比以前更可行。
  • ioslides_presentation YAML 中尝试self_contained: false
  • 请查看最新编辑。更近了,但仍然没有运气。
【解决方案2】:

这似乎是由于 ioslides 中的(旧?)Hammer.js 使用与vis.js 中的最新使用之间的不良交互造成的。

真的不知道怎么解决....!

【讨论】:

    猜你喜欢
    • 2015-11-24
    • 2016-07-17
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多