【问题标题】:How to add title to a networkD3 visualisation when saving as a web page?保存为网页时如何为networkD3可视化添加标题?
【发布时间】:2018-10-12 10:25:49
【问题描述】:

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

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 包(或任何交互式包),并且在玩耍中我发现为了保持它的交互性,它必须作为网页发布(或者有其他方式吗??)但是浏览包的文档我看不到添加标题或标题/ cmets 的方法。我想分享这个工作轮次,所以需要解释理想情况下每个级别在已发布网页上的含义

【问题讨论】:

    标签: r htmlwidgets networkd3 htmltools


    【解决方案1】:

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

    我尝试了添加 sankey$sizingPolicy$viewer$fill

    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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 感谢您的回答。我能问一下为什么你把它叫做 htmlwidgets::prepend... 而不是你通常如何调用函数吗?
      • 只是为了清楚函数的来源......一旦你用library(htmlwidgets)和library(htmltools)加载了包,从技术上来说这是不必要的
      • %&gt;% prependContent("Text") 我最终使用它来添加标题,但它一直在推动我的可视化并切断底部。即使保存为网页,这也会保持关闭。无论如何我可以阻止这种情况发生吗?
      • 试试sankey$sizingPolicy$viewer$fill &lt;- FALSE
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      • 2021-06-23
      • 2022-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多