为R

时间:2019-01-02 18:15:53

标签: javascript r d3.js htmlwidgets networkd3

我知道在networkD3中,您可以通过将不同的节点分组来指定它们的颜色。 例如。 nodes = data.frame(id = c(0,1,2), name = c("Node 1", "Node 2", "Node 3"), group = c("1","2","3"))

JS('d3.scaleOrdinal().domain(["1", "2", "3"]).range(["#000000", "#111111", "#222222"])')

我想指定选定数量的节点(例如,仅节点1),但是其余节点(例如,节点2和3)可以是任意颜色。

通过执行以下操作,所有节点将具有相同的颜色: JS('d3.scaleOrdinal().domain(["1"]).range(["#000000"])')

是否可以为选择的节点指定节点颜色,然后其他节点可以是任意颜色?我正在努力做到这一点,以便如果我的数据集很大,则不需要知道有多少组来定义其颜色可以是任意的组的颜色。

1 个答案:

答案 0 :(得分:0)

这里是一个示例,说明如何将“ 1”组的所有节点设置为黑色,而所有其他节点都从d3.schemeCategory20 ...中获得随机颜色...

library(networkD3)

colorfunc <- JS('colorfunc = function(i) { return i == 1 ? "#000" : d3.schemeCategory20[Math.floor(Math.random()*20)] };')

forceNetwork(Links = MisLinks, Nodes = MisNodes, Source = "source", 
             Target = "target", Value = "value", NodeID = "name",
             Group = "group", colourScale = colorfunc, opacity = 1)

enter image description here