R:networkD3 sankey图-颜色未显示

时间:2018-12-10 14:42:12

标签: r plot sankey-diagram htmlwidgets networkd3

我正在使用中的软件包来生成sankey图。我已经使用以下代码来生成工作图:

sankeyNetwork(Links = df_links, Nodes = df_nodes, Source = "source", 
              Target = "target", Value = "value", NodeID = "name", 
              units = "Cases", fontSize = 12, nodeWidth = 20)

但是,所有节点都被染成蓝色,我认为程序包的默认输出是分别为每个节点着色。

当我尝试添加NodeGroup函数时,该文档说应该允许显示颜色,所有节点标签消失,所有节点现在都染成黑色。

sankeyNetwork(Links = df_links, Nodes = df_nodes, Source = "source", 
              Target = "target", Value = "value", NodeID = "name", 
              NodeGroup = "ID", units = "Cases", fontSize = 12, 
              nodeWidth = 20)

如果有人能让我知道我要去哪里,那将不胜感激。我怀疑我误解了NodeGroup变量的用法-我目前正在为七个NodeID中的每一个分配一个唯一的组c(0,1,2,3,4,5,6,7),其最初目标是使每个节点的颜色不同。这是变量的正确解释吗?

1 个答案:

答案 0 :(得分:0)

您遇到的问题必须与正在使用的数据有关,但由于您尚未共享,我无法确切告诉您什么。如果我使用结构正确的数据并将其用作输入,则第一个精确的sankeyNetwork()命令将按预期方式工作(带有颜色)...

(有关NodeGroup参数的讨论,请参见下文)

library(networkD3)

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

df_links <- energy$links
df_nodes <- energy$nodes

sankeyNetwork(Links = df_links, Nodes = df_nodes, Source = "source", 
              Target = "target", Value = "value", NodeID = "name", 
              units = "Cases", fontSize = 12, nodeWidth = 20)

enter image description here

如果检查帮助文件,则NodeGroup参数被描述为“字符串,用于指定节点中的节点组。用于为网络中的节点着色。”如果您将NodeGroup指定为c(0,1,2,3,4,5,6,7),则不是字符串。这可能是为什么使用第二个sankeyNetwork()命令使所有节点均为黑色的原因。例如,有关使用sankeyNetwork为组着色的信息,请参见this question

此外,在“用法”部分的帮助文件顶部,您可以看到NodeGroup的默认值是传递给NodeID的值。因此,如果您没有像第一个示例中那样为NodeGroup分配任何内容,那么NodeID将被用作组...有效地为每个节点创建一个唯一的组,并为每个节点分配一个颜色根据colourScale参数。

帮助文件中没有明确说明的一件事是,似乎仅使用了组名的第一个单词,因此在上图中,例如,“机油进口”,“机油储备”和“油”节点都被视为同一组的一部分,因此具有相同的颜色。