【问题标题】:how to define nodes and links data frame for sankeyNetwork()如何为 sankeyNetwork() 定义节点和链接数据框
【发布时间】:2018-07-30 15:07:18
【问题描述】:

我有一个从源国家出口到目标国家的文件,贸易价值在 Before_value 维度。 我的数据位于 data.table 中,维度为 sourcetarget 作为字符(国家代码列表)和 beofre_value 数字。

我想生成一个桑基图,使用来自sankeyNetwork(),左边是来源国家,右边是目标国家,代表流量。如何正确定义节点和链接数据框? 我有这些行:

library("networkD3")

sankeyNetwork(Links = IMP$source, Nodes = iMP$target, Source = "source",
              Target = "target", Value = "Before_value", fontSize = 25, 
              nodeWidth = 30, fontFamily = "sans-serif", iterations = 0)

我收到了他的错误信息:Error in Links[, Source] : incorrect number of dimensions

【问题讨论】:

    标签: networkd3 r sankey-diagram htmlwidgets networkd3


    【解决方案1】:

    我相信您说的是networkD3 中的sankeyNetwork() 函数,而不是plotly 包。假设是这种情况,这里有一个可重现的最小示例来展示您的特定用例。

    library(networkD3)
    
    IMP <- data.frame(source = c("DEU", "DEU", "DEU", "FRA", "FRA", "FRA"),
                      target = c("ESP", "GBR", "ITA", "ESP", "GBR", "ITA"),
                      Before_value = c(4,2,7,4,1,8))
    
    # create nodes data by determining all unique nodes found in your data
    node_names <- unique(c(as.character(IMP$source), as.character(IMP$target)))
    nodes <- data.frame(name = node_names)
    
    # create links data by matching the source and target values to the index of the
    # node it refers to in the nodes data frame
    links <- data.frame(source = match(IMP$source, node_names) - 1,
                        target = match(IMP$target, node_names) - 1,
                        Before_value = IMP$Before_value)
    
    sankeyNetwork(Links = links, Nodes = nodes, Source = "source", 
                  Target = "target", Value = "Before_value")
    

    【讨论】:

      猜你喜欢
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多