参照生信技能树的公众号,但是自己还是做了一点修改。
https://mp.weixin.qq.com/s/6RxQltn5U9KyqN_05VwQjA
1. 计算不同样本中每个细胞亚群中的细胞数量
table(Idents(pbmc))
#以此类推计算其他亚群细胞数量
2. 建立绘制图形的表格
cluster0<-c(100,99)
cluster1<-c(500,400)
cluster2<-c(250,580)
#是每一个样本不同cluster的数量
.......
data_test<-data.frame(cluster0,cluster1,cluster2,......)#建立数据框
statistics = apply(data_test, 1, sum) # 得到每个样本的观测值总和
plot(statistics)
#因为想做百分比图,所以要获得不同cluster占total的百分比。
data_percent = data.frame() # 建立空数据框
# 每个值除以前面得到的总和获得占比
for (n in 1:30) {
data_percent = rbind( data_percent, data_test[n,] / statistics[n] )
}
# 再来看下,每个样本总和都等于1,现在符合要求了
statistics = apply(data_percent, 1, sum)
plot(statistics)
#再加上样本的命名信息
data_percent$names = c("sample1","sample2")
3. ggplot绘图
要把宽矩阵转换为长矩阵
library(reshape2)
data_plot = melt(data_percent)
colnames(data_plot) = c('name','cluster','percent')#修改每一列的名称。
绘图
library(ggplot2)
p = ggplot( data_plot, aes( x = name, weight = percent, fill = cluster))+ geom_bar( position = "stack",width=0.5) +theme_bw()
网友评论