使用NetworkD3修改Sankey中的链接和节点颜色

时间:2020-09-20 21:18:09

标签: javascript r d3.js sankey-diagram networkd3

我想更改Sankey中节点和链接的颜色。不幸的是,d3.scale.Ordinal()函数对我不起作用。 你有什么主意吗? 从概念上讲,左侧的节点应该与离开它们的链接具有相同的颜色。

如果您有任何想法,我会很高兴。 Sankey无需着色即可工作。 塞西

代码如下:

links2 <- data.frame(source=c(0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5),target=c(6,7,8,9,6,7,8,9,6,7,8,9,6,7,8,9,6,7,8,9,6,7,8,9),value=c(3,6,8,8,2,7,5,1,5,5,13,12,43,5,2,7,8,6,5,7,3,5,4,19))

nodes2 <-data.frame(name=c("Cow","Ice","Emu","Coala","Uhu","Panda","Pink","Cyan","Grey","Green"))          

links2$group <- as.factor(c("type_a","type_b","type_c","type_d","type_e","type_f"))

nodes2$group <- as.factor(c("a","b","c","d","e","f","g","h","i","j"))

my_colour <- 'd3.scale.Ordinal().domain(["type_a","type_b","type_c","type_d","type_e","type_f","a","b","c","d","e","f","g","h","i","j"]), .range(["darkblue", "gray45" , "khaki4", "skyblue1", "darkgoldenrod4", "gray27", "darkblue", "gray45" , "khaki4", "skyblue1", "darkgoldenrod4", "gray27","darkgreen", "forestgreen","yellowgreen","peru"])'

Network2 <- sankeyNetwork(Links=links2, Nodes=nodes2, Source = "source", Target = "target", Value = "value", NodeID = "name", sinksRight=FALSE,fontSize= 20,iterations=0, colourScale = my_colour, LinkGroup="group", NodeGroup="group")
```

1 个答案:

答案 0 :(得分:0)

您要传递给sankeyNetwork的JavaScript字符串中有三个错误。

  1. networkD3使用D3v4,而不是D3v3 ... d3.scale.Ordinal的名称来自D3v3,而D3v4的等效名称为d3.scaleOrdinal

  2. 此位]), .range([应该为]).range([

  3. 您需要使用HTML color names而不是CSS3名称