美文网首页
根据热图删基因 pheatmap 2.0

根据热图删基因 pheatmap 2.0

作者: 努力学习的消炎药 | 来源:发表于2023-04-12 15:14 被阅读0次

    根据热图删基因 pheatmap - 简书 (jianshu.com)
    最近点开去年写的一个教程感觉是有的点小学生秀肌肉的感觉在里面的,把一个简单问题复杂化了,这样做是很麻烦的,同样的问题,还是根据热图删基因,现在的我肯定不会这么做了。
    因为太麻烦了。
    同样的,方法升级。

    还是先画一个图

    ## 首先把图画出来,赋值给对象
    
    xheatmap = pheatmap(xray_dat2, #热图的数据
                        cluster_rows = TRUE,#行聚类
                        cluster_cols = F,#列聚类,可以看出样本之间的区分度
                        annotation_col =annotation_col, #标注样本分类
                        annotation_legend=T, # 显示注释
                        show_rownames = F,show_colnames = F,#显示行列名
                        gaps_col = c(3,6,9,12),
                        breaks = seq(-1.5,1.5,length.out=150),
                        scale = "row", #以行来标准化,这个功能很不错
                        annotation_colors =ann_colors ,
                        clustering_method = 'centroid',
                        clustering_distance_rows = "correlation",
                        main = 'Xray ',border=F,#width =4,height =6,
                        color =colorRampPalette(c("#4368B6FF", "white","red"))(150),#调色
                        # cellwidth = 6,cellheight = 6,
                        # filename = "l0704xray_whole_heatmap.pdf",
                        # filename = "xray_whole_heatmap.pdf",#是否保存
                        fontsize = 8,treeheight_row = 50)
    

    赋值的这个热图对象,可以参考上次写的那个
    同样的去拿到热图的对象,提取里面的label和order,方便后面的挑选。

    needdat = xheatmap[["tree_row"]][["order"]]
    names = xheatmap[["tree_row"]][["labels"]]
    names2 = names[needdat]
    picg = data.frame(order = needdat,
                      symbol = names2)##生成的第一遍
    
    write.csv(picg ,file = 'heatmap.csv')  ##现在发现,这种小细节挑基因的时候还是CSV,excle打开比较方便。
    

    打开我们的这个CSV的文档,删去我们不想要的基因,因为是和热图的顺序对应的,所以直接查找删除就比较方便。后面,有一个常用的小技巧。
    删除完的基因我们直接在excle里面复制一下。

    image.png
    复制完了后,在R里面输入tmp <- read.delim(file = 'clipboard')
    就直接读取了,非常方便
    image.png
    读进来的一般是一个dataframe,如果有需要多复制几列的话也是可以的。
    如果不喜欢这个技巧,可以使用read.csv()读取保存的基因列表。

    这个时候,我们拿到了基因名后,就可以直接在前面的热图里面重新绘制了,不需要考虑变动对象内部结构的问题了。

    xray_dat3 = xray_dat2 [rownames(xray_dat2) %in% tmp$Symbol,]
    xheatmap = pheatmap(xray_dat3, #热图的数据
                        cluster_rows = TRUE,#行聚类
                        cluster_cols = F,#列聚类,可以看出样本之间的区分度
                        annotation_col =annotation_col, #标注样本分类
                        annotation_legend=T, # 显示注释
                        show_rownames = F,show_colnames = F,#显示行列名
                        gaps_col = c(3,6,9,12),
                        breaks = seq(-1.5,1.5,length.out=150),
                        scale = "row", #以行来标准化,这个功能很不错
                        annotation_colors =ann_colors ,
                        clustering_method = 'centroid',
                        clustering_distance_rows = "correlation",
                        main = 'Xray ',border=F,#width =4,height =6,
                        color =colorRampPalette(c("#4368B6FF", "white","red"))(150),#调色
                        # cellwidth = 6,cellheight = 6,
                        # filename = "l0704xray_whole_heatmap.pdf",
                        # filename = "xray_whole_heatmap.pdf",#是否保存
                        fontsize = 8,treeheight_row = 0)
    

    这里设置treeheight_row = 0可以做到只聚类不显示聚类树。比较方便。
    其余的小参数再设置一下,就更漂亮了。
    下篇笔记再记录一下,热图的group和不同的颜色分组更改的小技巧,也是搬运整理的。希望对大家有帮助。

    相关文章

      网友评论

          本文标题:根据热图删基因 pheatmap 2.0

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