2016-03-06 9 views
4

Мои узлы состоят из имен и групп, но я не могу реализовать различные цвета для групп на моей диаграмме sankey. Цвета - либо синий, либо по умолчанию, или весь черный, используя код ниже.Как покрасить группы в sankeyNetwork NetworkD3?

Вот код, я использую:

sankeyNetwork(  
Links = data$links, 
Nodes = data$nodes, 
Source= "source", 
Target = "target", 
Value = "weight", 
NodeID = "names", 
fontSize = 15, 
NodeGroup = "group" 
)) 

Вот выход я получаю: enter image description here

+1

Пожалуйста, включите небольшой набор данных, который производит сюжет. –

ответ

0
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) 

Участки под Застройку два различных цвета для в сети графа.

0

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)) 

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)