Как раскрасить группы в sankeyNetwork сети D3?
Мои узлы состоят из имен и групп, но я не могу реализовать отдельные цвета для групп в моей диаграмме Санки. Все цвета либо синие со значениями по умолчанию, либо все черные с использованием приведенного ниже кода.
Вот код, который я использую:
sankeyNetwork(
Links = data$links,
Nodes = data$nodes,
Source= "source",
Target = "target",
Value = "weight",
NodeID = "names",
fontSize = 15,
NodeGroup = "group"
))
2 ответа
NodeGroup
вектор в Nodes
фрейм данных должен быть не числовым. Это не очевидно из документации. Поскольку вы не предоставили данные, с которыми работаете, мы не можем быть уверены, что это ваша проблема, но в примере, который сделал @john-friel, это проблема. Вот рабочий пример с единственным изменением в том, что group
вектор приводится к символьному вектору...
library(networkD3)
source <- c(0,1,2,3,4,5)
target <- c(2,2,2,3,1,0)
value <- c(33,44,55,66,77,88)
sankeydata <- data.frame(source,target, value)
names <- c('a', 'b', 'c', 'd', 'e', 'f')
id <- c(0,1,2,3,4,5)
group <- as.character(c(1,1,1,2,2,2)) # this is the only line changed
sankeyNodes <- data.frame(names,id, group)
sankeyNetwork(Links = sankeydata, Nodes = sankeyNodes, Source = "source",
Target = "target", Value = "value", NodeID = "names",
NodeGroup = "group", fontSize = 12, nodeWidth = 30)
library(networkD3)
source <- c(0,1,2,3,4,5)
target <- c(2,2,2,3,1,0)
value <- c(33,44,55,66,77,88)
sankeydata <- data.frame(source,target, value)
names <- c('a', 'b', 'c', 'd', 'e', 'f')
id <- c(0,1,2,3,4,5)
group <- c(1,1,1,2,2,2)
sankeyNodes <- data.frame(names,id, group)
sankeyNetwork(Links = sankeydata, Nodes = sankeyNodes, Source = "source",
Target = "target", Value = "value", NodeID = "names", NodeGroup = "group", fontSize = 12, nodeWidth = 30)
Я ожидал бы двух цветов (так как есть две группы), но никакие цвета не возвращаются. У меня та же проблема, что и у OP.
Текст справки предполагает, что за цвет отвечает NodeGroup.
Если вы запустите аналогичный код для другого графика в библиотеке (networkD3):
#same data
forceNetwork(Links = sankeydata, Nodes = sankeyNodes , Source = "source",
Target = "target", Value = "value", NodeID = "names",
Group = "group", opacity = 0.8, zoom = TRUE)
Графики двух разных цветов в сетевом графике.