Сохранение диаграммы сети Sankey 3 с использованием только кода

Я создал диаграмму Сэнки в R, используя networkD3 пакет, который я хотел бы сохранить как статическое изображение, используя код вместо нажатия кнопки "Экспорт" -> "Сохранить как изображение...".

Текущий код, который я пробовал (используя эту диаграмму Санки в качестве примера):

library(networkD3)

URL <- paste0(
  "https://cdn.rawgit.com/christophergandrud/networkD3/",
  "master/JSONdata/energy.json")
Energy <- jsonlite::fromJSON(URL)
# Plot
jpeg( filename = "Sankey.jpg", width = 4000, height = 4000)
sankeyNetwork(Links = Energy$links, Nodes = Energy$nodes, Source = "source",
              Target = "target", Value = "value", NodeID = "name",
              units = "TWh", fontSize = 12, nodeWidth = 30)
dev.off()

Все, что я получаю, это пустая белая коробка, когда я открываю изображение.

1 ответ

Решение

Самое простое рабочее решение, которое я нашел до сих пор:

  1. Установите PhantomJS. Например, используя Homebrew для OSX - brew install phantomjs
  2. Установите rbokeh - install.packages("rbokeh")

Затем:

library(rbokeh)
sn <- sankeyNetwork(Links = Energy$links, Nodes = Energy$nodes, Source = "source",
          Target = "target", Value = "value", NodeID = "name",
          units = "TWh", fontSize = 12, nodeWidth = 30)
widget2png(sn, "sankey.png")

Результат выглядит не очень хорошо, но это может послужить отправной точкой для исследований и улучшений.

РЕДАКТИРОВАТЬ: вот еще одно потенциальное решение с использованием webshot пакет.

Другие вопросы по тегам