R 如何为网络中的组着色3';桑基网络?

R 如何为网络中的组着色3';桑基网络?,r,d3.js,sankey-diagram,htmlwidgets,networkd3,R,D3.js,Sankey Diagram,Htmlwidgets,Networkd3,我的节点由名称和组组成,但我似乎无法在sankey图表中为组实现不同的颜色。颜色可以是默认的全蓝色,也可以是使用下面代码的全黑色 以下是我使用的代码: sankeyNetwork( Links = data$links, Nodes = data$nodes, Source= "source", Target = "target", Value = "weight", NodeID = "names", fontSize = 15, NodeGroup = "group" ))

我的节点由名称和组组成,但我似乎无法在sankey图表中为组实现不同的颜色。颜色可以是默认的全蓝色,也可以是使用下面代码的全黑色

以下是我使用的代码:

sankeyNetwork(        
Links = data$links,
Nodes = data$nodes,
Source= "source",
Target = "target",
Value = "weight",
NodeID = "names",
fontSize = 15,
NodeGroup = "group" 
))
下面是我得到的输出:


在网络图中为绘制两种不同的颜色

节点数据帧中的
节点组
向量需要为非数字。这在文档中并不明显。因为您没有提供您正在处理的数据,我们无法确定这是否是您遇到的问题,但在@john friel制作的示例中,这就是问题所在。下面是一个工作示例,唯一的变化是
向量被强制为字符向量

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)
库(networkD3)

来源请包括一个生成绘图的小数据集。
#same data
forceNetwork(Links = sankeydata, Nodes = sankeyNodes , Source = "source",
         Target = "target", Value = "value", NodeID = "names",
         Group = "group", opacity = 0.8, zoom = TRUE)
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)