6

我使用以下代码创建了一个交互式可视化:

library(networkD3)

nodes = data.frame("name" = c("node1", "node2","node3", "node4", "node5", "node6", "node7"))
links = as.data.frame(matrix(c(
0,1,7937,
0,2,6990,
0,3,2483,
1,4,2120,
2,4,666,
3,4,282,
1,5,4583,
2,5,5657,
3,5,731,
1,6,1234,
2,6,756,
3,6,1470), byrow = TRUE, ncol = 3))

names(links) = c("source", "target", "value")

sankey <- sankeyNetwork(Links = links, Nodes = nodes,
          Source = "source", Target = "target",
          Value = "value", NodeID = "name",
          fontSize= 12, nodeWidth = 15)'

这是我第一次使用 networkD3 包(或任何交互式包),并且在玩耍中我发现要保持它的交互性,它必须作为网页发布(或者有其他方式吗??)但是通过查看包的文档我看不到添加标题或标题/评论的方法。我想分享这个工作回合,所以需要解释每个级别在已发布网页上的理想含义

4

2 回答 2

8

没有内置功能networkD3来添加标题或说明,但您可以使用htmlwidgets包中的函数将内容添加到htmlwidget. 有很多选择,但例如......

library(htmlwidgets)
library(htmltools)

sankey <- htmlwidgets::prependContent(sankey, htmltools::tags$h1("Title"))
sankey <- htmlwidgets::appendContent(sankey, htmltools::tags$p("Caption"))
于 2018-05-02T12:16:51.140 回答
5

回应评论时,“我最终使用它来添加标题,但它一直在推动我的可视化并切断底部。即使保存为网页,它也会保持关闭。无论如何我可以阻止这种情况发生吗?”

我尝试了添加 sankey$sizingPolicy$viewer$fill <- FALSE 的建议回复,但是,它使我的 sankey 比我想要的要小。我发现您可以在添加 HTML 小部件之前通过添加 width=(desired width) 和 height=(desired height) 来调整 Sankey 的宽度和高度,这会创建空间,然后添加标题和注释,正如 CJ Yetman 所建议的那样。

library(networkD3)
library(htmlwidgets)
library(htmltools)

nodes = data.frame("name" = c("node1", "node2","node3", "node4", "node5", "node6", "node7"))
links = as.data.frame(matrix(c(
  0,1,7937,
  0,2,6990,
  0,3,2483,
  1,4,2120,
  2,4,666,
  3,4,282,
  1,5,4583,
  2,5,5657,
  3,5,731,
  1,6,1234,
  2,6,756,
  3,6,1470), byrow = TRUE, ncol = 3))

names(links) = c("source", "target", "value")

sankey <- sankeyNetwork(Links = links, Nodes = nodes,
                        Source = "source", Target = "target",
                        Value = "value", NodeID = "name",
                        fontSize= 12, nodeWidth = 15,
                        width= 900, height=600)


sankey <- htmlwidgets::prependContent(sankey, htmltools::tags$h1("Title"))
sankey <- htmlwidgets::appendContent(sankey, htmltools::tags$p("Caption"))

sankey
于 2018-08-03T16:11:26.577 回答