plot из sankeyNetwork в networkD3 не показывает вывод и не генерирует предупреждение / ошибку в R - PullRequest
0 голосов
/ 11 сентября 2018

Я хочу сгенерировать график Санки для визуализации перемещений в различные области, используя sankeyNetwork() из пакета в .Я попытался воспроизвести некоторые примеры как можно лучше.Но когда я запускаю функцию sankeyNetwork, вывод не генерируется.Кроме того, R не показывает никаких предупреждений, erros и так далее.Поэтому я не могу точно проверить, допустил ли я ошибки (очевидно, потому что сюжет не генерируется) и как их исправить.Я предоставил образец df и код ниже.

library(networkD3)

nodes <- data.frame(area = c("a", "b", "c", "d", "e", "f", "g", 
                            "h", "i", "j", "k", "l", "m", "n")) 

links2 <- data.frame(source = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,
                                 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 11, 11, 11, 12, 13, 13), 
                     target = c(2, 8, 10, 11, 13, 0, 4, 5, 6, 7, 10, 11, 13, 0, 4, 9, 10, 12, 13, 0, 5, 6, 7, 10, 11, 13, 7, 10, 12, 
                     0, 10, 11, 12, 13, 8, 9, 10, 11, 12, 13, 9, 10, 13, 10, 12, 13, 0, 11, 12, 13, 0, 14, 0, 0), 
                     value  = c(14, 4, 6, 23, 3, 6, 36, 3, 4, 4, 3, 12, 3, 24, 3, 6, 19, 3, 9, 3, 6, 3, 11, 9, 3, 22, 3, 3, 10, 3, 4, 
                                3, 3, 9, 12, 5, 16, 13, 3, 10, 3, 4, 9, 7, 4, 4, 77, 4, 6, 6, 27, 3, 3, 3))

sankeyNetwork(Links = links2, Nodes = nodes,
              Source = "source", Target = "target",
              Value = "value", NodeID = "area",
              fontSize= 12, nodeWidth = 30) 

1 Ответ

0 голосов
/ 11 сентября 2018

Вы ссылаетесь на 15 уникальных узлов в вашем links2 фрейме данных, но у вас есть только 14 уникальных узлов в вашем nodes фрейме данных.

length(unique(c(links2$source, links2$target)))
# [1] 15
length(nodes$area)
# [1] 14

Если вы добавите другой узел, он будет работать...

library(networkD3)

nodes <- data.frame(area = c("a", "b", "c", "d", "e", "f", "g", 
                             "h", "i", "j", "k", "l", "m", "n", "o")) 

links2 <- data.frame(source = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,
                                5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 11, 11, 11, 12, 13, 13), 
                     target = c(2, 8, 10, 11, 13, 0, 4, 5, 6, 7, 10, 11, 13, 0, 4, 9, 10, 12, 13, 0, 5, 6, 7, 10, 11, 13, 7, 10, 12, 
                                0, 10, 11, 12, 13, 8, 9, 10, 11, 12, 13, 9, 10, 13, 10, 12, 13, 0, 11, 12, 13, 0, 14, 0, 0), 
                     value  = c(14, 4, 6, 23, 3, 6, 36, 3, 4, 4, 3, 12, 3, 24, 3, 6, 19, 3, 9, 3, 6, 3, 11, 9, 3, 22, 3, 3, 10, 3, 4, 
                                3, 3, 9, 12, 5, 16, 13, 3, 10, 3, 4, 9, 7, 4, 4, 77, 4, 6, 6, 27, 3, 3, 3))

sankeyNetwork(Links = links2, Nodes = nodes,
              Source = "source", Target = "target",
              Value = "value", NodeID = "area",
              fontSize= 12, nodeWidth = 30)

enter image description here

...