Указать цветовую схему для n узлов в сети D3 в R
Я знаю, что в сети D3 вы можете указать цвет различных узлов, помещая их в группы. Например. 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 ответ
Вот пример того, как вы можете установить все узлы группы "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)