https://www.jianshu.com/p/b066bb016a73
https://www.jianshu.com/p/1fc465b1a41d
基于
ggplot2
+ggforce
用于描述数据从一系列节点到另一系列节点之间的流动情况
示例一
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() #示例三
修饰语句讲解
ggplot(data_used, aes(x, id = id, split = y, value = Freq)) +
geom_parallel_sets(alpha = 0.4, axis.width = 0, fill="#636363") +
geom_parallel_sets_axes(axis.width = 0.1, colour = "black", fill="white") +
geom_parallel_sets_labels(colour = "black", angle = 90) +
theme_classic()
geom_parallel_sets()
: 调节连线的参数
geom_parallel_sets_axes()
: 调节方框本身的参数
geom_parallel_sets_labels()
: 调节方框内标记的字体参数取消方框内的标记 :
geom_parallel_sets_labels(size=0)