указать цветовую схему для n узлов в сети D3 в R - PullRequest
0 голосов
/ 02 января 2019

Я знаю, что в сети 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 Ответ

0 голосов
/ 03 января 2019

Вот пример того, как вы можете установить все узлы группы "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

...