使用R语言的层次聚类生成一个热力图,用于显示数据集中的聚类。

5
我正在尝试对由蛋白质DNA相互作用构成的数据集进行聚类,并生成一个热图,以显示结果数据,使数据在对角线上排列。我能够对数据进行聚类并生成该数据的树状图,但是当我使用R中的heatmap函数生成数据的热图时,聚类不可见。如果您查看前两个图片,其中一个是我能够生成的树状图,第二个是我能够生成的热图,第三个只是一个聚类热图的示例,展示了我大致期望的结果。从比较第二和第三张图片可以看出,第三张图片中有聚类,而第二张图片中没有。这是我的数据集链接:http://pastebin.com/wQ9tYmjy 我能够在R中对数据进行聚类并生成图像:

args <- commandArgs(TRUE);

matrix_a <- read.table(args[1], sep='\t', header=T, row.names=1);

location <- args[2];

matrix_d <- dist(matrix_a);

hc <- hclust(matrix_d,"average");

mypng <- function(filename = "mydefault.png") {

png(filename)

}

options(device = "mypng")

plot(hc);

我同样也能够生成热力图:

matrix_a <- read.table("Arda_list.txt.binary.matrix.txt", sep='\t', header=T, row.names=1);

mtscaled <- as.matrix(scale(matrix_a))

heatmap(mtscaled, Colv=F, scale='none')

我尝试按照Christopher Bare的帖子http://digitheadslabnotebook.blogspot.com/2011/06/drawing-heatmaps-in-r.html进行操作,但是我似乎漏掉了什么。任何想法都将不胜感激。我附上了我得到的热图和树形图像,第三张图片来自Christopher Bare的帖子。谢谢。


4
那么你可以对数据进行聚类,生成热力图...问题到底在哪里? - Paul Hiemstra
嗨,保罗,当我生成热图时,数据没有聚类。我似乎能够生成聚类数据的树形图,并且可以生成数据的热图,但是当我生成热图时,数据没有聚类。 - Alos
请提供一个可重现的示例,并包括聚类和热图的输出。从示例和输出中,您需要向我们展示您期望的内容以及为什么得到的结果是错误的。 - Paul Hiemstra
嗨,保罗,问题在于我期望看到清晰的聚类,但实际上并没有得到。后来发现我应该通过Pearson或其他方法运行我的数据以生成良好的距离值。一旦我这样做了,我就能在数据中看到聚类了。 - Alos
@PaulHiemstra 我已经尝试回答了你的所有评论,请让我知道如果还是不清楚。谢谢。 - Alos
我无法确定你的结果是否好,因为我不知道你的数据。我要求澄清是因为你的问题不够清晰。 - Paul Hiemstra
1个回答

7

在此输入图片描述

事实证明,我应该先使用一些与我的数据相关的相关性来生成距离矩阵。 我使用Pearson计算了矩阵上的相似度值,然后调用了堆栈图函数,这样更容易聚类数据。 一旦我能够生成聚类,我就使它们排列在对角线上。 上面是现在的结果。 我必须修改如何在数据集上调用heatmap,以便将聚类对齐到坐标轴:

heatmap(mtscaled, Colv=T,Rowv=T, scale='none',symm = T)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接