【问题标题】:Sankey Diagram with networkD3 package will not plot带有 networkD3 包的桑基图不会绘制
【发布时间】:2015-08-22 12:37:46
【问题描述】:

我正在使用 R 中 networkD3 包中的 sankeyNetwork 函数,以找到 here 的代码为例。但是,我得到的只是一个空白屏幕。该图应该显示年龄组之间的感染流(按性别)。我的代码如下:

library(RCurl)
library(networkD3)

edges <- read.csv(curl("https://raw.githubusercontent.com/kilimba/data/master/infection_flows.csv"),stringsAsFactors = FALSE )

nodes = data.frame(ID = unique(c(edges$Source, edges$Target)))

nodes$indx =0
for (i in 1:nrow(nodes)){
  nodes[i,]["indx"] = i - 1
}

edges2 <- merge(edges,nodes,by.x = "Source",by.y = "ID")
edges2$Source <-NULL
names(edges2) <- c("target","value","source")
edges2 <- merge(edges2,nodes,by.x = "target",by.y = "ID")
edges2$target <- NULL
names(edges2) <- c("value","source","target")

nodes$indx <- NULL
# Plot
sankeyNetwork(Links = edges2, Nodes = nodes,
              Source = "source", Target = "target",
              Value = "value", NodeID = "ID",
              width = 700, fontsize = 12, nodeWidth = 30)

【问题讨论】:

  • 我面临同样的问题。 sankeyNetwork 使用我正在使用的数据集的较小样本,但如果尝试使用完整集,它会显示一个空白屏幕。

标签: r sankey-diagram htmlwidgets networkd3


【解决方案1】:
  1. 您不需要RCurlread.csv 可以直接从 URL 读取
  2. 在创建节点 data.frame 时使用 stringsAsFactors = FALSE 选项可能更安全
  3. 正如其他人所指出的,您必须确保链接数据中的源变量和目标变量是数字的,并且它们是零索引的
  4. 正如其他人所指出的,字体大小参数正确命名为fontSize
  5. 我提供了一种更直接的方法来创建带有节点数据帧中节点的数字索引的链接数据
library(networkD3)

edges <- read.csv("https://raw.githubusercontent.com/kilimba/data/master/infection_flows.csv",stringsAsFactors = FALSE)

nodes = data.frame(ID = unique(c(edges$Source, edges$Target)), stringsAsFactors = FALSE)

edges$Source <- match(edges$Source, nodes$ID) - 1
edges$Target <- match(edges$Target, nodes$ID) - 1

sankeyNetwork(Links = edges, Nodes = nodes,
              Source = "Source", Target = "Target",
              Value = "Value", NodeID = "ID",
              width = 700, fontSize = 12, nodeWidth = 30)

【讨论】:

    【解决方案2】:

    我通过确保源、目标和值都是数字来为我解决了这个问题。

    例如: Energy$links$value

    【讨论】:

    • 提问者发布了一个代码,答案应该显示在该代码中,请检查其他回答者
    【解决方案3】:

    调整字体大小确实有效,但您的论点缺少大写:fontSize

    sankeyNetwork(Links = edges2, Nodes = nodes,
      Source = "source", Target = "target",
      Value = "value", NodeID = "ID",
      width = 700, fontSize = 12,
      nodeWidth = 30)
    

    【讨论】:

      【解决方案4】:

      您确定您的 R 控制台中没有打印错误吗?

      这对我有两个小的修改:

      1. 一开始也加载 curl 包

        library("curl")
        
      2. fontsize 参数显然不起作用,应该删除。

        # Plot
        sankeyNetwork(Links = edges2, Nodes = nodes,
              Source = "source", Target = "target",
              Value = "value", NodeID = "ID",
              width = 700, #fontsize = 12,
              nodeWidth = 30)
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-23
        • 1970-01-01
        • 2019-02-22
        • 2019-07-13
        • 2021-06-23
        • 1970-01-01
        • 2019-07-11
        相关资源
        最近更新 更多