对于热图,之前有画过,但当时对于繁多的arguements了解的不是很清楚,但是今天在微信公众号上找到了一篇真正的保姆级教程,讲的非常的详细!!!然后自己做了一点补充与拓展,完成了自己的个性化需求分析。
1. 推文引用及介绍
首推(保姆级教程):
热图进阶:
2. 数据实战
2.1 先获取pheatmap包所有的参数信息(代码来自推文一)
2.2 开始动手制作需要的各个inputdata
输入的数据是之前跑出来的 gsva.result_df, 但这不是最终可以输入的数据。后面会说到原因
2.2.1 修改数据的行名,这样热图的行标签就搞定了
rownames(gsva.result_df) <- c("TGF-beta","WNT","RAS","HIPPO","NOTCH","Cell_Cycle","PI3K", "P53")
2.2.2 制作annotation_col
制作热图上面的那两行注释条,对应碎片 annotation_col = ann_col
ann_col = data.frame(copykat.pred = factor(sce_cnv$copykat.pred,
levels = c("aneuploid","diploid"),
labels = c("malignant","no_malignant")),
seurat_clusters = factor(sce_cnv$RNA_snn_res.0.05,levels = c(0,1,2,3),
labels = c("CAF_0","CAF_1","CAF_2","CAF_3")))
tips:
row.names(ann_col) = colnames(sce_cnv)
一般都需要这样一句代码,但是由于我们是从scRNA的metadata中提取出来的,所以呈现出来的数据框是带了细胞名称的(即barcodes)。
2.2.3 制作行和列注释的颜色
ann_color = list(copykat.pred = c(malignant="#0089CF", no_malignant="#E889BD"),
seurat_clusters = c(CAF_0 = "firebrick3",CAF_1 = "orange",
CAF_2 = "yellow",CAF_3 = "blue")) #定义分组颜色
2.2.4 对原始数据进行排序,对应碎片 gsva.result_df_order
如果不对原始数据进行排序,则会得到如下的结果:
# 排序也很简单,如果只有一行注释信息,用sort即可,两行及以上,则用order.
neworder <- order(sce_cnv$copykat.pred,sce_cnv$RNA_snn_res.0.05)
# 然后通过这个变量对原始数据进行排序
gsva.result_df_order <- gsva.result_df[,neworder]
2.2.5 最终的画图
p<-pheatmap(gsva.result_df_order***,scale="row",
show_colnames=F, show_rownames=T, cluster_cols=F, cluster_rows=T,cex=1,
clustering_distance_rows="euclidean", cex=1,clustering_distance_cols="euclidean",
clustering_method="complete", border_color=FALSE,cutree_col = 3,
annotation_col = ann_col***,***annotation_colors = ann_color,
color = colorRampPalette(c("navy","white","firebrick3"))(100))
结果如图所示:
3. 致谢
打豆豆的小潘学长
TS的美梦