桑基图用于展示一个样本具有多种属性
基本
数据格式(模拟生成数据)
rm(list = ls())
options(stringsAsFactors = F)
##生成模拟数据表
df <- data.frame(cluster = rep(c("A", "B"), 30),
group = rep(c("group1", "group2", "group3"), each = 20),
group1 = rep(c("1", "2", "3"), 20))
library(ggalluvial)
#定义足够多的颜色,后面从这里选颜色
mycol <- rep(c("#223D6C","#D20A13","#FFD121","#088247","#11AA4D","#58CDD9",
"#7A142C","#5D90BA","#029149","#431A3D","#91612D","#6E568C",
"#E0367A","#D8D155","#64495D","#7CC767"),2)
#格式转换
UCB_lodes <- to_lodes_form(df[,1:ncol(df)],
axes = 1:ncol(df),
id = "Cohort")
dim(UCB_lodes)
#######################
ggplot(UCB_lodes,
aes(x = x, stratum = stratum, alluvium = Cohort,
fill = stratum, label = stratum)) +
scale_x_discrete(expand = c(0, 0)) +
geom_flow(width = 1/8) + #线跟方块间空隙的宽窄
geom_stratum(alpha = .9,width = 1/10) + #方块的透明度、宽度
geom_text(stat = "stratum", size = 3,color="black") + #文字大小、颜色
#不喜欢默认的配色方案,用前面自己写的配色方案
scale_fill_manual(values = mycol) +
xlab("") + ylab("") +
theme_bw() + #去除背景色
theme(panel.grid =element_blank()) + #去除网格线
theme(panel.border = element_blank()) + #去除外层边框
theme(axis.line = element_blank(),axis.ticks = element_blank(),axis.text = element_blank()) + #去掉坐标轴
ggtitle("")+
guides(fill = FALSE)
ggsave("sankey模型测试.pdf")
结果
信息补全版
ggplot(UCB_lodes,
aes(x = x, stratum = stratum, alluvium = Cohort,
fill = stratum, label = stratum)) +
scale_x_discrete(expand = c(0, 0)) +
geom_flow(width = 1/8) + #线跟方块间空隙的宽窄
geom_stratum(alpha = .9,width = 1/10) + #方块的透明度、宽度
geom_text(stat = "stratum",size = 3,color="black") + #文字大小、颜色
#不喜欢默认的配色方案,用前面自己写的配色方案
scale_fill_manual(values = mycol) +
xlab("") +
ylab("") +
theme_bw() + #去除背景色
theme(panel.grid =element_blank()) + #去除网格线
theme(panel.border = element_blank()) + #去除外层边框
theme(axis.line = element_blank(),
axis.ticks = element_blank(),
#axis.text = element_blank()##显示坐标
) + #去掉坐标轴
ggtitle("标题")+##标题
guides(fill = FALSE)
ggsave("sankey模型测试.pdf")