R: добавить заголовок к графику networkD3 и сохранить

Я заинтересован в добавлении заголовка к графику forceNetwork, созданному с помощью NetworkD3, и экспорту HTML с помощью magrittr.

На странице справки объекта тега R: HTML было найдено решение для добавления заголовка. Тогда я был направлен на добавление htmltool browsable() параметры в "Изменение цвета фона графика networkD3" на вопрос Stackru - ответ от @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(config, package = package):
"пакет" должен иметь длину 1

Извиняюсь, если это простая отладка, но я не программист.

1 ответ

Решение

htmltools::tagList() функция не возвращает htmlwidget как forceNetwork() функция делает, поэтому она не выводит действительный ввод для 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')
Другие вопросы по тегам