在使用多个sankeyNetwork(NetworkD3)进行标记时控制Firefox中的打印大小

在使用多个sankeyNetwork(NetworkD3)进行标记时控制Firefox中的打印大小,r,r-markdown,sankey-diagram,htmlwidgets,networkd3,R,R Markdown,Sankey Diagram,Htmlwidgets,Networkd3,这是一次类似事件的后续行动 我也有同样的问题,但是当从R Markdown编织到HTML时。有了@CJYetman发布的解决方案,我能够为我的sankey找到正确的尺寸,但只有第一个 我尝试添加onRender并每次更新方括号中的数字,但我一定是做错了什么。以下是完整的R标记代码(编织为HTML时仅呈现第一个图表): --- 标题:“测试” 作者:“CS” 日期:“2018年8月2日” 输出: html_文档:默认值 pdf_文档:默认值 --- ```{r设置,include=FALSE} k

这是一次类似事件的后续行动

我也有同样的问题,但是当从R Markdown编织到HTML时。有了@CJYetman发布的解决方案,我能够为我的sankey找到正确的尺寸,但只有第一个

我尝试添加
onRender
并每次更新方括号中的数字,但我一定是做错了什么。以下是完整的R标记代码(编织为HTML时仅呈现第一个图表):

---
标题:“测试”
作者:“CS”
日期:“2018年8月2日”
输出:
html_文档:默认值
pdf_文档:默认值
---
```{r设置,include=FALSE}
knitr::opts_chunk$set(echo=TRUE)
```
```{r}
库(htmlwidgets)
图书馆(网络3)
图书馆(magrittr)
节点=data.frame(“name”=因子(如.character(1:9)),
“组”=as.字符(c(1,2,2,3,3,4,4,4)))
links=as.data.frame(矩阵(byrow=T,ncol=3,c(
0, 1, 1400,
0, 2, 18600,
1, 3, 400,
1, 4, 1000,
3, 5, 100,
3, 6, 40,
3, 7, 20,
3, 8, 4
)))
名称(链接)=c(“源”、“目标”、“值”)
链接
```
此图表在firefox中运行良好:
```{r}
sn11)只使用一次
htmlwidgets::onRender()
函数,否则JavaScript何时运行以及运行时会或不会存在哪些其他元素就不太清楚了

2) 在
htmlwidgets::onRender()
函数中(理想情况下,在渲染最后一个sankeyNetwork时运行),从每个渲染的sankeyNetwork中删除viewbox

3) 要使用
htmlwidgets::onRender()函数运行多个JavaScript命令,请将所有命令包装在(JavaScript)函数中

然后可以根据需要专门针对页面上的任意多个
htmlwidget
,例如

onRender(sn,'function(el){el.querySelector(“svg”).removeAttribute(“viewBox”)})
onRender(sn2,'function(el){el.querySelector(“svg”).removeAttribute(“viewBox”)}')
---
title: "test"
author: "CS"
date: "02/08/2018"
output:
  html_document: default
  pdf_document: default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r}
library(htmlwidgets)
library(networkD3)
library(magrittr)

nodes = data.frame("name" = factor(as.character(1:9)),
                   "group" = as.character(c(1,2,2,3,3,4,4,4,4)))

links = as.data.frame(matrix(byrow = T, ncol = 3, c(
  0, 1, 1400,
  0, 2, 18600,
  1, 3, 400,
  1, 4, 1000,
  3, 5, 100,
  3, 6, 40,
  3, 7, 20,
  3, 8, 4
)))
names(links) = c("source","target","value")

links
```

this chart works fine in firefox:
```{r}
sn1 <- sankeyNetwork(Links = links, Nodes = nodes, Source = "source", 
                    Target = "target", Value = "value", NodeID = "name", 
                    NodeGroup = "group", fontSize = 12)

htmlwidgets::onRender(sn1, 'document.getElementsByTagName("svg")[0].setAttribute("viewBox", "")')
```

but this one doesn't display at all when knitted:
```{r}
sn2 <- sankeyNetwork(Links = links, Nodes = nodes, Source = "source", 
                    Target = "target", Value = "value", NodeID = "name", 
                    NodeGroup = "group", fontSize = 12, sinksRight = FALSE)

htmlwidgets::onRender(sn2, 'document.getElementsByTagName("svg")[1].setAttribute("viewBox", "")')
```

and neither does this one:
```{r}
sn3 <- sankeyNetwork(Links = links, Nodes = nodes, Source = "source", 
                    Target = "target", Value = "value", NodeID = "name", 
                    NodeGroup = "group", fontSize = 12, sinksRight = FALSE)

htmlwidgets::onRender(sn3, 'document.getElementsByTagName("svg")[2].setAttribute("viewBox", "")')
```
---
title: "test"
author: "CS"
date: "02/08/2018"
output:
  html_document: default
pdf_document: default
---

  ```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r}
library(htmlwidgets)
library(networkD3)
library(magrittr)

nodes = data.frame("name" = factor(as.character(1:9)),
                   "group" = as.character(c(1,2,2,3,3,4,4,4,4)))

links = as.data.frame(matrix(byrow = T, ncol = 3, c(
  0, 1, 1400,
  0, 2, 18600,
  1, 3, 400,
  1, 4, 1000,
  3, 5, 100,
  3, 6, 40,
  3, 7, 20,
  3, 8, 4
)))
names(links) = c("source","target","value")

links
```

this chart works fine in firefox:
  ```{r}
sn1 <- sankeyNetwork(Links = links, Nodes = nodes, Source = "source",
                     Target = "target", Value = "value", NodeID = "name",
                     NodeGroup = "group", fontSize = 12)

sn1
```

but this one doesn't display at all when knitted:
```{r}
sn2 <- sankeyNetwork(Links = links, Nodes = nodes, Source = "source",
                    Target = "target", Value = "value", NodeID = "name",
                    NodeGroup = "group", fontSize = 12, sinksRight = FALSE)

sn2
```

and neither does this one:
```{r}
sn3 <- sankeyNetwork(Links = links, Nodes = nodes, Source = "source",
                    Target = "target", Value = "value", NodeID = "name",
                    NodeGroup = "group", fontSize = 12, sinksRight = FALSE)

htmlwidgets::onRender(sn3, jsCode =
        'function(){
          document.getElementsByTagName("svg")[0].setAttribute("viewBox", "");
          document.getElementsByTagName("svg")[1].setAttribute("viewBox", "");
          document.getElementsByTagName("svg")[2].setAttribute("viewBox", "");
        }')
```