打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
分组聚类的热图

   大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~

   就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~

   这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!

1.问题

应该是会经常遇到这样的热图,就是说它的聚类情况无法与分组信息吻合。

其实这个并不是错了,是因为用于聚类的行(选出的这部分基因)的表达模式在两组之间没有明显区别。

只要改变基因数量,或者换一组基因,聚类树就有可能变得和分组吻合。

假如你尝试换了很多次还是没有办法让它们变得吻合,那就取消聚类。直接使用热图的参数cluster_cols = F即可。

图就会变成:

取消了列聚类,那么热图列的顺序就会按照矩阵列的顺序排布了。那当样本数量多起来的时候,组内的数据规律就无法清晰的展示。

所以会需要组内聚类这样的操作咯。这个只能用complexheatmap来实现,我还顺便找到了注释条加分组标签的画法,变得比常规热图好看一丢。

2.代码如下

rm(list = ls())
library(tinyarray)
a = geo_download('GSE56649',destdir = tempdir())
a$exp = log2(a$exp 1)
find_anno(a$gpl)

## [1] '`library(hgu133plus2.db);ids <- toTable(hgu133plus2SYMBOL)` and `ids <- AnnoProbe::idmap('GPL570')` are both avaliable'

Group = factor(rep(c('control','treat'),times = c(13,9)))
Group = factor(Group,levels = c('control','treat'))
ids <- AnnoProbe::idmap('GPL570')
exp = trans_array(a$exp,ids)
g = names(tail(sort(apply(exp, 1, sd)),100))
draw_heatmap(exp[g,],Group)

这是找了一个普通芯片数据,画的一部分基因的常规热图,默认行列都会聚类

draw_heatmap(exp[g,],Group,cluster_cols = F)

cluster_cols=F控制了列不聚类。

接下来是分组聚类热图:

library(ComplexHeatmap)
library(circlize)
col_fun = colorRamp2(c(-2, 0, 2), c('#2fa1dd', 'white', '#f87669'))
top_annotation = HeatmapAnnotation(
  cluster = anno_block(gp = gpar(fill = c('#2fa1dd', '#f87669')),
                       labels = c('control','treat'),
                       labels_gp = gpar(col = 'white', fontsize = 12)))

m = Heatmap(t(scale(t(exp[g,]))),name = ' ',
            col = col_fun,
        top_annotation = top_annotation,
        column_split = Group,
        show_heatmap_legend = T,
        border = F,
        show_column_names = F,
        show_row_names = F,
        column_title = NULL)
m
齐活~
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
逐步深入绘制热图
R语言学习笔记之热图绘制
使用NMF代替层次聚类
单细胞基因可视化之热图的根本改造2
scRNA分析| 和SCI学 定制化聚类点图(Dotplot ),含二行代码出图方式
利用R语言heatmap.2函数进行聚类并画热图 | Public Library of Bioinformatics
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服