如何在R的sankeyNetwork中按来源匹配流入流出的颜色与顺序?
R中sankeyNetwork桑基图按来源拆分流入流出并保持组内颜色一致的实现问题
我需要在R的sankeyNetwork桑基图中,按来源重新排列流入和流出。比如局部OP组的2年幸存者中,部分继续存活至第3年,其余被截尾——我不想把所有截尾案例归为一组,而是按来源拆分流入:来自不同初始分组的流入要分别对应到后续的存活和截尾节点,且各初始分组对应的颜色(红、黄、绿这类)在整个流向中保持一致。
以下是我的数据和R代码:
library(networkD3) # 定义节点数据 nodes2 <- data.frame( No = 0:16, label = c( "Localized OP", "Localized CRT", "Localized NoTX", "Regional OP", "Regional CRT", "Regional NoTX", "Distant OP", "Distant CRT", "Distant NoTX", "Survived 2 yr", "Censored 2 yr", "Survived 3 yr", "Censored 3 yr", "Survived 4 yr", "Censored 4 yr", "Survived 5 yr", "Censored 5 yr" ) ) # 定义链接数据 links2 <- data.frame( Source = c( 0, 0, 9, 9, 11, 11, 13, 13, 1, 1, 9, 9, 11, 11, 13, 13, 2, 2, 9, 9, 11, 11, 13, 13, 3, 3, 9, 9, 11, 11, 13, 13, 4, 4, 9, 9, 11, 11, 13, 13, 5, 5, 9, 9, 11, 11, 13, 13, 6, 6, 9, 9, 11, 11, 13, 13, 7, 7, 9, 9, 11, 11, 13, 13, 8, 8, 9, 9, 11, 11, 13, 13 ), Target = c( 9, 10, 11, 12, 13, 14, 15, 16, 9, 10, 11, 12, 13, 14, 15, 16, 9, 10, 11, 12, 13, 14, 15, 16, 9, 10, 11, 12, 13, 14, 15, 16, 9, 10, 11, 12, 13, 14, 15, 16, 9, 10, 11, 12, 13, 14, 15, 16, 9, 10, 11, 12, 13, 14, 15, 16, 9, 10, 11, 12, 13, 14, 15, 16, 9, 10, 11, 12, 13, 14, 15, 16 ), Value = c( 4686, 340, 4069, 617, 3599, 470, 3134, 465, 43, 56, 21, 22, 15, 6, 12, 3, 487, 495, 340, 147, 263, 77, 208, 55, 6147, 1431, 4506, 1641, 3479, 1027, 2821, 658, 336, 658, 99, 237, 46, 53, 34, 12, 571, 2277, 288, 283, 207, 81, 158, 49, 831, 971, 367, 464, 201, 166, 130, 71, 917, 2940, 201, 716, 85, 116, 51, 34, 466, 4993, 164, 302, 119, 45, 95, 24 ) ) links2$group <- as.factor(c(rep("A", 24), rep("B", 24), rep("C", 24))) nodes2$group <- as.factor(c(rep("A",3), rep("B", 3), rep("C", 3), "b", "c","b", "c","b", "c","b", "c" ) ) my_color <- 'd3.scaleOrdinal() .domain(["A", "B", "C", "b", "c"]) .range(["#941e34", "#e5b560", "#455f54", "#dfdfdd", "#504e49"])' sankeyNetwork( Links = links2, Nodes = nodes2, Source = "Source", Target = "Target", Value = "Value", NodeID = "label", sinksRight=FALSE, nodeWidth=40, fontSize=13, nodePadding=20, LinkGroup = "group", colourScale=my_color, iterations = 0)
当前生成的桑基图中,同一年份的存活/截尾节点的流入是混合排布的,无法区分其来自哪个初始分组;而我需要的效果是:每个初始分组的流向会独立拆分到后续的存活和截尾节点,对应分组的颜色在整个流向中保持统一。我在Sankematic工具中能实现这个效果,但无法在R的sankeyNetwork中复现,请问该如何调整代码?
内容的提问来源于stack exchange,提问作者MEE JOO KANG
相关产品推荐
相关产品推荐

