【问题标题】:R: Is there a way to generate a heatmap of the dissimilarity matrix only and sort it by cluster?R:有没有办法只生成相异矩阵的热图并按聚类对其进行排序?
【发布时间】:2019-09-09 12:22:41
【问题描述】:

我正在使用 hclust 在 266 个观测值中查找集群。所有变量都是分类的。我正在尝试创建从 daisy 函数创建的相异矩阵的热图,以可视化集群内的相似性。我正在使用heatmap 函数:

heatmap(x, Rowv = NULL, Colv = if(symm)"Rowv" else NULL,
        distfun = dist, hclustfun = hclust,
        reorderfun = function(d, w) reorder(d, w),
        add.expr, symm = FALSE, revC = identical(Colv, "Rowv"),
        scale = c("row", "column", "none"), na.rm = TRUE,
        margins = c(5, 5), 
        cexRow = 0.2 + 1/log10(nr), cexCol = 0.2 + 1/log10(nc),
        labRow = NULL, labCol = NULL, main = NULL,
        xlab = NULL, ylab = NULL,
        keep.dendro = FALSE, verbose = getOption("verbose"))

但是,此函数要求 x 是一个数值矩阵。我尝试使用 data.matrix(data, metric="gower") 输入我的相异矩阵,但当我这样做时,它会将矩阵视为数据集。 heatmap.2 函数(可能有一些额外的设置)在我使用的 R 版本中不可用。

我的问题的第二部分是,是否有一种方法可以重新排列热图,使每个集群都清楚地标有下划线。我正在尝试:

x <- cutree(hclust.object, 4)
#cluster number=4
cluster.membership <- factor(assignCluster(data, data, x))

然后在heatmap函数中设置如下:

reorderfun = function(hclust.object, cluster.membership) reorder(hclust.object, cluster.membership)

结果似乎按预期排序。但是,我仍然找不到在热图上可视化聚类结果的方法(例如,通过使用图例)。

【问题讨论】:

    标签: r heatmap categorical-data


    【解决方案1】:

    通过使用pheatmap 包中的pheatmap 函数,您可以根据您的相异矩阵生成带有聚类的热图。

    假设data 是您的数据集,hclust.object 是基于相异矩阵生成的hclust 对象;

    library(pheatmap)
    pheatmap(data, cluster_rows = hclust.object, cutree_rows = 4)
    

    应该给你热图,它是基于 hclust 对象聚类的,它是由你的相异矩阵生成的。 pheatmap函数中的其他参数也可以随意使用。

    如需了解更多信息,请使用?pheatmap

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 2021-08-26
      • 2017-12-17
      • 2020-07-08
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多