В настоящее время я создаю диаграмму Санки с использованием пакета 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
Кроме того, если это все еще входит в сферу этого вопрос, можно ли добавить цветовую легенду к графику?