[英]Inerting multiple level into sankey diagram using googlevis
我正在尝试使用 googlevis 包在 r-studio 中制作一个包含 6 个级别的 sankey 图。 借助How to make a googleVis multiple Sankey from a data.frame? 我在三个级别上都成功了,那里提供了代码。 这里是:
'''
source <- sample(c("NorthSrc", "SouthSrc", "EastSrc", "WestSrc"), 100, replace=T)
mid <- sample(c("NorthMid", "SouthMid", "EastMid", "WestMid"), 100, replace=T)
destination <- sample(c("NorthDes", "SouthDes", "EastDes", "WestDes"), 100, replace=T)
dummy <- rep(1,100) # For aggregation
dat <- data.frame(source,mid,destination,dummy)
aggdat <- aggregate(dummy~source+mid+destination,dat,sum)
library(dplyr)
datSM <- dat %>%
group_by(source, mid) %>%
summarise(toMid = sum(dummy) ) %>%
ungroup()
datMD <- dat %>%
group_by(mid, destination) %>%
summarise(toDes = sum(dummy) ) %>%
ungroup()
colnames(datSM) <- colnames(datMD) <- c("From", "To", "Dummy")
datVis <- rbind(datSM, datMD)
p <- gvisSankey(datVis, from="From", to="To", weight="dummy")
plot(p)
'''
这导致:在此处输入图像描述
我现在的问题是,如何插入额外的级别以及如何调整接受多个中间级别的代码? 这是示例数据集:
'''
source <- sample(c("NorthSrc", "SouthSrc", "EastSrc", "WestSrc"), 100, replace=T)
mid_one <- sample(c("North", "South", "East", "West"), 100, replace=T)
mid_two <-sample(c("WestNorth", "WestSouth", "SouthEast", "NorthWest"), 100, replace=T)
mid_three <- sample(c("NorthMid", "SouthMid", "EastMid", "WestMid"), 100, replace=T)
mid_four <- sample(c("West", "East", "NorthCis", "SouthCis"), 100, replace=T)
destination <- sample(c("NorthDes", "SouthDes", "EastDes", "WestDes"), 100, replace=T)
dummy <- rep(1,100) # For aggregation
dat <- data.frame(source,mid_one, mid_two,mid_three, mid_four,destination,dummy)
aggdat <- aggregate(dummy~source+mid_one+mid_two+mid_three+mid_four+destination,dat,sum)
'''
刚刚自己找到了解决方案(如果有人正在寻找类似的问题):
'''
datSM1 <- dat %>%
group_by(source, mid_one) %>%
summarise(toMid1 = sum(dummy) ) %>%
ungroup()
datSM2 <- dat %>%
group_by(mid_one, mid_two) %>%
summarise(toMid2 = sum(dummy) ) %>%
ungroup()
datSM3 <- dat %>%
group_by(mid_two, mid_three) %>%
summarise(toMid3 = sum(dummy) ) %>%
ungroup()
datSM4 <- dat %>%
group_by(mid_three, mid_four) %>%
summarise(toMid4 = sum(dummy) ) %>%
ungroup()
datMD <- dat %>%
group_by(mid_four, destination) %>%
summarise(toDes = sum(dummy) ) %>%
ungroup()
colnames(datSM1)<- colnames(datSM2) <- colnames(datSM3)<- colnames(datSM4)<-
colnames(datMD) <- c("From", "To", "Dummy")
datVis <- rbind(datSM1,datSM2, datSM3,datSM4,datMD)
''''
比通过 gvisSankey 绘制
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.