仅在 Sankey networkd3 图中显示选定的标签

Only show selected labels in Sankey networkd3 diagram

下图显示了我的桑基图之一:

Sankey Diagram with a lot of labels

如您所见,我确实显示了很多标签。我知道我可以完全禁用标签,但是,我很想知道我是否也可以只选择我想显示的特定标签(基于节点的 ID 或路径遍历的值或其他)。有没有人玩过它并且可以给我一个提示?

节点标签来自您传递给函数的 Nodes 数据框中的 NodeID。这些 ID/labels 中的任何一个都可以是空白字符串 "",这将有效地使关联的 node/s 的标签不可见。

使用帮助文件的示例,这将打印每个节点的标签...

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)

而这不会为左上角的三个 'Oil' 节点打印标签...

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

energy$nodes[37:39, ] <- ' '

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

但是,当标签/NodeIDs 与 Links 数据框中的 SourceTarget id 不匹配时要小心......当那是在这种情况下(如上例所示),sankeyNetwork() 函数依赖于数据框中 id 的顺序来关联它们。