【问题标题】:R: networkD3 sankey plot - colours not displayingR:networkD3 sankey plot - 颜色不显示
【发布时间】:2018-12-10 14:42:11
【问题描述】:

我正在使用 中的 包来生成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 变量的用法 - 我目前正在为七个NodeIDs 中的每一个分配一个独特的组c(0,1,2,3,4,5,6,7),最初的目的是让每个节点的颜色不同。这是对变量的正确解释吗?

【问题讨论】:

    标签: networkd3 r r plot sankey-diagram htmlwidgets networkd3


    【解决方案1】:

    您遇到的问题一定与您正在使用的数据有关,但我无法准确告诉您是什么,因为您没有共享它。如果我使用正确结构化的数据并将其用作输入,那么您的第一个准确的 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)
    

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

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

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

    【讨论】:

    • 谢谢@CJ - 这个问题是由你在上一段中提到的“第一个词”问题引起的。
    猜你喜欢
    • 2013-09-24
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 2015-11-10
    • 2021-06-25
    相关资源
    最近更新 更多