美文网首页R
pheatmap 坐标轴排序

pheatmap 坐标轴排序

作者: 吴十三和小可爱的札记 | 来源:发表于2020-12-18 19:59 被阅读0次

简介

heatmap 排序的实质是对hclust的结果进行排序,由于存在聚类这一客观情况,所以我们期望的排序结果是一个局域型排序产物(在同一聚类水平下的排序)。

基本实现过程是以目前聚类树的排列顺序为基准,通过给对应位置的值一个坐标来实现顺序重排。

解析 hclust

hclust 的顺序是靠order 和 labels 两个数据控制,labels 是有顺序的名称,其座次可以被索引提取。order 则相当于索引,从labels 的相应座次选取并调整hclut的名称。

library(pheatmap)
set.seed(13)
test = matrix(rnorm(200), ncol = 10, nrow = 20,
              dimnames = list(
                row_names = paste0("Geno", 1:20),
                col_names = paste0("Test", 1:10)
              ))

# heatmap
pheatmap(test)

# dist mat
mat <- dist(test)
hclust_mat <- hclust(mat)
hclust_mat$order
hclust_mat$labels
  1. hclust_mat$order
    [1] 11 14 16 8 17 5 20 12 1 6 9 7 10 18 3 2 19 4 13 15

  2. hclust_mat$labels
    [1] "Geno1" "Geno2" "Geno3" "Geno4" "Geno5" "Geno6"
    [7] "Geno7" "Geno8" "Geno9" "Geno10" "Geno11" "Geno12"
    [13] "Geno13" "Geno14" "Geno15" "Geno16" "Geno17" "Geno18"
    [19] "Geno19" "Geno20"

强制重排序

因此,可以直接用order去强制控制hclust的顺序,从而控制热图的顺序,但这样热图的聚类树状图会非常混乱。

# reorder row_clust
index <- seq(1,20, by = 1)
hclust_mat$order <- index
pheatmap(test, cluster_rows = hclust_mat)

reorder 函数

reorder.dendrogram {stats}可以通过一个值向量实现聚类树次序重排,从而控制pheatmap的顺序,这样做的好处是实现了局域型排序,即同聚类水平的数据按照给定index排序,避免了聚类树乱序。

require(gridExtra)

# reorder 1 
index <- order(rowSums(test), decreasing = TRUE)
dend = reorder(as.dendrogram(hclust_mat), 
               wts = index)
row_cluster <- as.hclust(dend)
p1 <- pheatmap(test, cluster_rows = row_cluster, 
         show_colnames = FALSE)

# reorder 2
index <- order(rowSums(test), decreasing = FALSE)
dend = reorder(as.dendrogram(hclust_mat), 
               wts = index)
row_cluster <- as.hclust(dend)
p2 <- pheatmap(test, cluster_rows = row_cluster, 
         show_colnames = FALSE)


# extract plot list
plot_list <- list(p1[[4]], p2[[4]])

grid.arrange(arrangeGrob(grobs= plot_list,ncol=2))

由此可见,通过reorder 函数中的wts(权重)来控制热图坐标顺序是有效且清晰的。

相关文章

  • pheatmap 坐标轴排序

    简介 heatmap 排序的实质是对hclust的结果进行排序,由于存在聚类这一客观情况,所以我们期望的排序结果是...

  • pheatmap热图

    #install.packages("pheatmap") library(pheatmap) #引用包 e...

  • R 热图

    安装包: install.packages("pheatmap") 导入包:library(pheatmap) 读...

  • 聚类热图——pheatmap和complexheatmap

    参考 pheatmap包 >CRAN - Package pheatmap (r-project.org)[htt...

  • R语言自定义坐标轴排序

    R语言作图时,默认情况下软件会按照自己的方式对坐标轴的项目进行排序,然而这种排序往往不是我们所希望的,因此...

  • ComplexHeatmap绘制复杂热图

    pheatmap交互 最近ComplexHeatmap更新可以将pheatmap对象进行参数转换。新增的Compl...

  • pheatmap函数error

    用pheatmap函数在Linux系统上画图 输入数据格式:如下 p2=pheatmap(marker,clust...

  • 2019-10-24 Heatmap

    用“pheatmap"包画热图~ 高级绘图 1. 这是最简单的一张热图 pheatmap(Heatmapdata,...

  • 热图——pheatmap学习

    热图——pheatmap学习代码及参数如下: 仅展示热图汇总得结果! 参考:pheatmap.pdf (r-pro...

  • pheatmap

    一、 创建一个随机矩阵10x20 二、作图1.基本作图 scale是指对数值进行均一化处理,在基因表达量的数据中,...

网友评论

    本文标题:pheatmap 坐标轴排序

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