Отсутствие указанного узла c и связанных с ним ребер в диаграмме Санки - PullRequest
1 голос
/ 16 марта 2020

В настоящее время я создаю диаграмму Санки с использованием пакета networkD3 в R.

Существует один начальный узел, назовем его узлом 0, который связан со всеми остальными узлами. Кроме того, у меня есть группирующая переменная, скажем, пол, которая должна быть визуально различимой. В идеале я хотел бы удалить узел 0 и все его ребра из графика, не затрагивая остальную часть графика (то есть узел 0 и его соединения должны быть просто невидимыми). В качестве альтернативы было бы полезно, если бы я мог определить специальный цвет и непрозрачность для соединений с узлом 0. Хотя это было возможно путем определения группы для всех строк, где столбец источника показывает 0, это затем заменит цветовую схему для другого группировка переменных в моих данных.

Вот мой код с использованием некоторых вымышленных данных:

library(dplyr)
library(networkD3)

links <- structure(list(source = c(0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 0, 0, 
                                   2, 2, 0, 0, 3, 3, 2, 0, 0, 3, 3, 4, 4, 0, 0, 3, 5, 5), 
                        target = c(1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 
                                   5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6), 
                        gender = c("Female", "Male", "Female", "Male", "Female", 
                                   "Male", "Female", "Male", "Female", "Male", "Female", 
                                   "Male", "Female", "Male", "Female", "Male", "Female", 
                                   "Male", "Male", "Female", "Male", "Female", "Male", 
                                   "Female", "Male", "Female", "Male", "Female", "Female", "Male"), 
                        value = c(83, 64, 33, 6, 41, 59, 60, 6, 19, 70, 49, 86, 31, 97, 
                                  83, 96, 53, 69, 57, 64, 16, 47, 51, 86, 39, 30, 13, 27, 84, 71), 
                        group = c("A","A", "B", "B", "A", "A", "B", "B", "B", "B", "A", "A", "B", "B", 
                                  "A", "A", "B", "B", "B", "A", "A", "B", "B", "B", "B", "A", "A", 
                                  "B", "B", "B"), 
                        IDsource = c(0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 0, 
                                     0, 2, 2, 0, 0, 3, 3, 2, 0, 0, 3, 
                                     3, 4, 4, 0, 0, 3, 5, 5), 
                        IDtarget = c(1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 
                                     4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6)), 
                   class = "data.frame", row.names = c(NA, -30L))

nodes <- data.frame(
  name = c(as.character(links$source),
           as.character(links$target)) %>% unique())

nodes$group <- as.factor(c("node_col"))


sankey_cols <- 'd3.scaleOrdinal() .domain(["Female", "Male", "node_col"]) .range([d3.rgb(100,150,150, 0.5), 
                                                                                  d3.rgb(150,150,100, 0.5), 
                                                                                  d3.rgb(200,100,150, 0.5)])'

p <- sankeyNetwork(Links = links, Nodes = nodes, 
                   Source =  "IDsource", Target = "IDtarget",
                   colourScale = sankey_cols,iterations = 4,fontSize = 15,
                   LinkGroup = "gender",NodeGroup = "group",
                   Value = "value", NodeID = "name", sinksRight = FALSE)
p

Sankey-diagram

Кроме того, если это все еще входит в сферу этого вопрос, можно ли добавить цветовую легенду к графику?

...