You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用googleVis在RStudio中制作6层级桑基图?

用googleVis制作多层级桑基图

问题背景

已成功用googleVis实现3层级桑基图,现需基于包含source、mid_one、mid_two、mid_three、mid_four、destination的6层级数据集,修改代码生成对应桑基图。

解决方案

核心思路是对每一组相邻层级,分别统计节点间的流量权重,再将所有相邻层级的流量数据合并为googleVis Sankey图所需的格式。具体代码如下:

# 生成6层级测试数据
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) # 用于聚合计数

dat <- data.frame(source,mid_one, mid_two,mid_three, mid_four,destination,dummy)

# 加载dplyr包
library(dplyr)

# 处理每一对相邻层级,生成From-To-Weight的格式
dat_S_m1 <- dat %>%
  group_by(source, mid_one) %>%
  summarise(Dummy = sum(dummy)) %>%
  ungroup() %>%
  rename(From = source, To = mid_one)

dat_m1_m2 <- dat %>%
  group_by(mid_one, mid_two) %>%
  summarise(Dummy = sum(dummy)) %>%
  ungroup() %>%
  rename(From = mid_one, To = mid_two)

dat_m2_m3 <- dat %>%
  group_by(mid_two, mid_three) %>%
  summarise(Dummy = sum(dummy)) %>%
  ungroup() %>%
  rename(From = mid_two, To = mid_three)

dat_m3_m4 <- dat %>%
  group_by(mid_three, mid_four) %>%
  summarise(Dummy = sum(dummy)) %>%
  ungroup() %>%
  rename(From = mid_three, To = mid_four)

dat_m4_des <- dat %>%
  group_by(mid_four, destination) %>%
  summarise(Dummy = sum(dummy)) %>%
  ungroup() %>%
  rename(From = mid_four, To = destination)

# 合并所有层级流量数据
datVis <- rbind(dat_S_m1, dat_m1_m2, dat_m2_m3, dat_m3_m4, dat_m4_des)

# 生成并绘制桑基图
p <- gvisSankey(datVis, from="From", to="To", weight="Dummy")
plot(p)

代码说明

  • 针对每一组相邻层级(如source到mid_one、mid_one到mid_two等),通过group_by+summarise统计节点间的流量总和
  • 每个子集统一重命名为From、To、Dummy(权重列),确保格式一致
  • 用rbind将所有子集合并为googleVis可识别的完整数据集
  • 调用gvisSankey生成桑基图,指定from、to、weight参数即可

内容的提问来源于stack exchange,提问作者HOX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 01:06:21