ggplot2: Sankey plot

作者: LET149 | 来源:发表于2023-04-12 10:37 被阅读0次

https://www.jianshu.com/p/b066bb016a73

桑基图

用于描述数据从一系列节点到另一系列节点之间的流动情况


Sankey plot

1. 用途

2. 用pyecharts绘制桑基图

3. ggplot2+ggforce

3.1 示例一
require(ggforce)
require(tidyr)
require(reshape2)

data <- reshape2::melt(Titanic)[10:25,]

data <- gather_set_data(data, 1:4)  '#数据结构在下面

ggplot(data, aes(x, id = id, split = y, value = value)) +
  geom_parallel_sets(aes(fill = Sex), alpha = 0.4, axis.width = 0.3) +
  geom_parallel_sets_axes(axis.width = 0.3, colour = "black", fill = "white" ) + 
  geom_parallel_sets_labels(colour = 'black', angle = 0) +
  theme_classic()  #示例一
'#数据结构

> data
    Class    Sex   Age Survived value id        x      y
10    2nd   Male Adult       No   154  1    Class    2nd
11    3rd   Male Adult       No   387  2    Class    3rd
12   Crew   Male Adult       No   670  3    Class   Crew
13    1st Female Adult       No     4  4    Class    1st
14    2nd Female Adult       No    13  5    Class    2nd
15    3rd Female Adult       No    89  6    Class    3rd
16   Crew Female Adult       No     3  7    Class   Crew
17    1st   Male Child      Yes     5  8    Class    1st
18    2nd   Male Child      Yes    11  9    Class    2nd
19    3rd   Male Child      Yes    13 10    Class    3rd
20   Crew   Male Child      Yes     0 11    Class   Crew
21    1st Female Child      Yes     1 12    Class    1st
22    2nd Female Child      Yes    13 13    Class    2nd
23    3rd Female Child      Yes    14 14    Class    3rd
24   Crew Female Child      Yes     0 15    Class   Crew
25    1st   Male Adult      Yes    57 16    Class    1st
101   2nd   Male Adult       No   154  1      Sex   Male
111   3rd   Male Adult       No   387  2      Sex   Male
121  Crew   Male Adult       No   670  3      Sex   Male
131   1st Female Adult       No     4  4      Sex Female
141   2nd Female Adult       No    13  5      Sex Female
151   3rd Female Adult       No    89  6      Sex Female
161  Crew Female Adult       No     3  7      Sex Female
171   1st   Male Child      Yes     5  8      Sex   Male
181   2nd   Male Child      Yes    11  9      Sex   Male
191   3rd   Male Child      Yes    13 10      Sex   Male
201  Crew   Male Child      Yes     0 11      Sex   Male
211   1st Female Child      Yes     1 12      Sex Female
221   2nd Female Child      Yes    13 13      Sex Female
231   3rd Female Child      Yes    14 14      Sex Female
241  Crew Female Child      Yes     0 15      Sex Female
251   1st   Male Adult      Yes    57 16      Sex   Male
102   2nd   Male Adult       No   154  1      Age  Adult
112   3rd   Male Adult       No   387  2      Age  Adult
122  Crew   Male Adult       No   670  3      Age  Adult
132   1st Female Adult       No     4  4      Age  Adult
142   2nd Female Adult       No    13  5      Age  Adult
152   3rd Female Adult       No    89  6      Age  Adult
162  Crew Female Adult       No     3  7      Age  Adult
172   1st   Male Child      Yes     5  8      Age  Child
182   2nd   Male Child      Yes    11  9      Age  Child
192   3rd   Male Child      Yes    13 10      Age  Child
202  Crew   Male Child      Yes     0 11      Age  Child
212   1st Female Child      Yes     1 12      Age  Child
222   2nd Female Child      Yes    13 13      Age  Child
232   3rd Female Child      Yes    14 14      Age  Child
242  Crew Female Child      Yes     0 15      Age  Child
252   1st   Male Adult      Yes    57 16      Age  Adult
103   2nd   Male Adult       No   154  1 Survived     No
113   3rd   Male Adult       No   387  2 Survived     No
123  Crew   Male Adult       No   670  3 Survived     No
133   1st Female Adult       No     4  4 Survived     No
143   2nd Female Adult       No    13  5 Survived     No
153   3rd Female Adult       No    89  6 Survived     No
163  Crew Female Adult       No     3  7 Survived     No
173   1st   Male Child      Yes     5  8 Survived    Yes
183   2nd   Male Child      Yes    11  9 Survived    Yes
193   3rd   Male Child      Yes    13 10 Survived    Yes
203  Crew   Male Child      Yes     0 11 Survived    Yes
213   1st Female Child      Yes     1 12 Survived    Yes
223   2nd Female Child      Yes    13 13 Survived    Yes
233   3rd Female Child      Yes    14 14 Survived    Yes
243  Crew Female Child      Yes     0 15 Survived    Yes
253   1st   Male Adult      Yes    57 16 Survived    Yes
示例一
示例二
load("/home/zhiyong/Desktop/AAAAAAA-Amel-and-Bter/RData/Amel_3_raw_cluster_0_removed_doublet_removed_HVF_825_dims_8.RData")
load("/home/zhiyong/Desktop/AAAAAAA-Amel-and-Bter/RData/Bter_15_raw_cluster_0_removed_doublet_removed_HVF_1200_dims_8.RData")
load("/home/zhiyong/Desktop/AAAAAAA-Amel-and-Bter/Figure-4__scRNA-seq_analysis/Intergration_of_Amel_3_and_Bter_15/By_all_one-to-one-orthologous-genes/HVF_1400_dim_7/Harmony_of_Amel_3_and_Bter_14__HVF_1400_dim_7.RData")

object_used_harmonied <- Harmony_of_Amel_3_and_Bter_14__HVF_1400_dim_7

kk <- Amel_3_raw_cluster_0_removed_doublet_removed_HVF_825_dims_8@meta.data[,c("orig.ident","seurat_clusters")]
kk[["Harmony"]] <- object_used_harmonied$seurat_clusters[object_used_harmonied$orig.ident=="Amel_3"]
kk <- kk[,c(2,3)]
colnames(kk)[1] <- "Amel_3"
kk <- as.data.frame(table(kk))
kk[,1] <- paste0("Amel_", kk[,1])
kk[,2] <- paste0("Harmony_", kk[,2])

head(kk)   #示例一

data <- gather_set_data(kk, 1:2)  '#数据结构在下面
head(data)   #示例二

ggplot(data, aes(x, id = id, split = y, value = Freq)) +
  geom_parallel_sets(aes(fill = x), alpha = 0.4, axis.width = 0.3) +
  geom_parallel_sets_axes(axis.width = 0.3, colour = "black", fill = "white" ) + 
  geom_parallel_sets_labels(colour = "black", angle = 0) +
  theme_classic()  #示例三
示例一
示例二
示例三

相关文章

网友评论

    本文标题:ggplot2: Sankey plot

    本文链接:https://www.haomeiwen.com/subject/vbimoktx.html