R 删除“;“未使用”;sankey网络中的节点

R 删除“;“未使用”;sankey网络中的节点,r,sankey-diagram,networkd3,R,Sankey Diagram,Networkd3,我正在尝试建立一个sankey网络。 这是我的数据和代码: library(networkD3) nodes <- data.frame(c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "D", "E", "N", "O", "P", "Q", "R")) names(nodes) <- "name" nodes$name = as.character(nodes$name) links <- data.fram

我正在尝试建立一个sankey网络。 这是我的数据和代码:

library(networkD3)
nodes <- data.frame(c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "D", "E", "N", "O", "P", "Q", "R"))
names(nodes) <- "name"
nodes$name = as.character(nodes$name)
links <- data.frame(matrix( 
  c(0,  2,  318.167, 
0,  3,  73.85, 
0,  4,  51.1262,
0,  5,  6.83333,
0,  6,  5.68571,
0,  7,  27.4167,
0,  8,  4.16667,
0,  9,  27.7381,
1,  10, 627.015,
1,  3,  884.428,
1,  4,  364.211,
1,  13, 12.33333,
1,  14, 9,
1,  15, 37.2833,
1,  16, 9.6,
1,  17, 30.5485), nrow=16, ncol=3, byrow = TRUE))
colnames(links) <- c("source", "target", "value")
links$source = as.integer(links$source)
links$target = as.integer(links$target)
links$value = as.numeric(links$value)
sankeyNetwork(Links = links, Nodes = nodes, Source = "source",
          Target = "target", Value = "value", NodeID = "name",
          fontSize = 12, fontFamily = 'Arial', nodeWidth = 20)
库(networkD3)

节点节点必须是唯一的,请参见下面的示例。我删除了重复的节点:“D”和“E”,然后在链接中,我删除了引用不存在的节点的链接。我们只有16个节点,以0:15为基数。在链接数据框中,最后两行引用16和17


或作为评论:

另一种说法是。。。节点数据框中的每个节点都将被打印,即使它与另一个节点具有相同的名称,因为索引在技术上是唯一的id

库(networkD3)

节点那么网络中的节点就没有办法清除了?@FlorianSeliger不知道你的意思。你能否澄清一下,预期的产量是多少?从我的示例中,我们可以看到附加的D和E被删除。问题是,在您的示例中,链接1-16和1-17缺失。我想显示我的数据中的所有链接,但要去掉显示时没有任何链接的节点(在我的示例D、E中,在您的示例N、O中)。@FlorianSeliger,因为我们没有节点16和17。然后从节点定义中删除“N”和“O”。@FlorianSeliger然后将链接数据中的最后两个链接更改为1->3和1->4,以便它们指向实际的D和E节点,而不是从节点数据框中删除的重复节点
nodes <- data.frame(c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "N", "O", "P", "Q", "R"))
library(networkD3)

nodes <- data.frame(name = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "N", "O", "P", "Q", "R"), 
                    ix = 0:15)

links <- data.frame(matrix( 
  c(0,  2,  318.167, 
    0,  3,  73.85, 
    0,  4,  51.1262,
    0,  5,  6.83333,
    0,  6,  5.68571,
    0,  7,  27.4167,
    0,  8,  4.16667,
    0,  9,  27.7381,
    1,  10, 627.015,
    1,  3,  884.428,
    1,  4,  364.211,
    1,  13, 12.33333,
    1,  14, 9,
    1,  15, 37.2833), nrow=14, ncol=3, byrow = TRUE))
colnames(links) <- c("source", "target", "value")

sankeyNetwork(Links = links, Nodes = nodes, Source = "source",
              Target = "target", Value = "value", NodeID = "name",
              fontSize = 12, fontFamily = 'Arial', nodeWidth = 20)