【问题标题】:R: add title to networkD3 plot and saveR:为networkD3绘图添加标题并保存
【发布时间】:2017-10-23 21:55:57
【问题描述】:

我有兴趣为使用NetworkD3 创建的 forceNetwork 图形添加标题并使用 magrittr 导出 html。

在R: HTML Tag Object help page 中找到了一个解决方案,以便添加标题。然后我被指示在"Change background color of networkD3 plot" StackOverflow 问题中添加 htmltool browsable() 参数 - 来自@timelyportfolio 的回答。

下面我提供了一个最小的工作示例,用于添加标题,然后在没有标题的情况下保存网络,最后我尝试将两者结合起来。

library(networkD3)
library(htmltools)

# Load data
data(MisLinks)
data(MisNodes)

# Plot with title in R Viewer
browsable(
  tagList(
    tags$h1("Title"),
      forceNetwork(Links = MisLinks, Nodes = MisNodes,
                   Source = "source", Target = "target",
                   Value = "value", NodeID = "name",
                   Group = "group", opacity = 0.8)
  )
)

虽然我可以使用 magrittr %>% 保存没有标题:

library(magrittr)

# Plot and save to Mis.html
forceNetwork(Links = MisLinks, Nodes = MisNodes,
                 Source = "source", Target = "target",
                 Value = "value", NodeID = "name",
                 Group = "group", opacity = 0.8)%>%  
      saveNetwork(file = 'Mis.html')

我无法将两者结合起来而没有出现以下错误。

#Plot with title and save to title_Mis.html
browsable(
  tagList(
    tags$h1("Title"),
      forceNetwork(Links = MisLinks, Nodes = MisNodes,
                   Source = "source", Target = "target",
                   Value = "value", NodeID = "name",
                   Group = "group", opacity = 0.8)
  )
)%>%  
  saveNetwork(file = 'title_Mis.html')

system.file 中的错误(配置,包 = 包):
'package' 的长度必须为 1

抱歉,如果这只是一个简单的调试,但我不是程序员。

【问题讨论】:

  • 我没有过多地使用networkD3,但感觉类似的问题记录在here,它说“htmlwidgets::saveWidget旨在保存单个@987654332 @,所以 mapSync 失败,因为它由多个 htmlwidget 组成。” browsable 创建的对象有两个。在 RStudio 中,您可以直接单击导出到 html 的选项,这很有效……但是,我也不会对这个解决方案感到满意。让我多做一些工作,看看有什么其他的工作......

标签: r d3.js htmlwidgets networkd3 htmltools


【解决方案1】:

htmltools::tagList() 函数不会像 forceNetwork() 函数那样返回 htmlwidget,因此它不会为 networkD3::saveNetwork() 函数输出有效输入。尝试使用htmlwidgets::prependContent() 添加这样的标题...

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

data(MisLinks)
data(MisNodes)

forceNetwork(Links = MisLinks, Nodes = MisNodes, Source = "source", 
             Target = "target", Value = "value", NodeID = "name",
             Group = "group", opacity = 0.8) %>% 
  htmlwidgets::prependContent(htmltools::tags$h1("Title")) %>% 
  saveNetwork(file = 'title_Mis.html')

【讨论】:

    猜你喜欢
    • 2018-10-12
    • 2022-10-17
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2022-09-27
    • 2012-02-23
    • 2019-09-08
    • 1970-01-01
    相关资源
    最近更新 更多