繁体   English   中英

使用 googlevis 将多个级别惰性化到 sankey 图中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM