Как не отображать значения в узлах или ссылках в SankeyDiagram, используя networkD3 в R - PullRequest
0 голосов
/ 10 ноября 2019

В приведенном ниже примере с санкейдиаграммой можно ли в любом случае скрыть «Значения», отображаемые на диаграмме при наведении - как на узлах, так и в ссылках. Я в основном использую диаграмму Санки, чтобы показать стилизованную блок-схему, и я бы хотел, чтобы значения вообще не показывались пользователю

URL <- paste0('https://cdn.rawgit.com/christophergandrud/networkD3/master/JSONdata/energy.json')
energy <- jsonlite::fromJSON(URL)

sankeyNetwork(Links = energy$links, Nodes = energy$nodes, Source = 'source',
              Target = 'target', Value = 'value', NodeID = 'name',
              units = 'TWh', fontSize = 12, nodeWidth = 30)

Чтобы было понятно, на скриншоте ниже я все же хотел быПосмотрите ветроэнергетическую сетку, но хотелось бы, чтобы 289KWH не отображалось enter image description here

1 Ответ

0 голосов
/ 10 ноября 2019

Вы можете сгенерировать любой текст, который вы хотите отобразить во всплывающих подсказках, и добавить его к объекту htmlwidgets, а затем использовать некоторый пользовательский JavaScript, чтобы установить для него текст всплывающей подсказки ...

library(jsonlite)
library(networkD3)
library(htmlwidgets)

URL <- paste0('https://cdn.rawgit.com/christophergandrud/networkD3/master/JSONdata/energy.json')
energy <- jsonlite::fromJSON(URL)

# generate the text you want to display
energy$links$name <-
  paste0(energy$nodes$name[energy$links$source + 1],
         " -> ", energy$nodes$name[energy$links$target + 1])

sn <- sankeyNetwork(Links = energy$links, Nodes = energy$nodes, Source = 'source',
              Target = 'target', Value = 'value', NodeID = 'name',
              units = 'TWh', fontSize = 12, nodeWidth = 30)

# add the names back into the links data because sankeyNetwork strips it out
sn$x$links$name <- energy$links$name

# add onRender JavaScript to set the title to the value of 'name' for each link
sn <- htmlwidgets::onRender(
  sn,
  '
  function(el, x) {
  d3.selectAll(".link").select("title foreignObject body pre")
  .text(function(d) { return d.name; });
  }
  '
)

# display the result
sn

enter image description here

...