更改热图的距离和链接

Changing Distance and Linkage of a heat map

提问人:Rosie Lomas 提问时间:5/21/2023 更新时间:5/21/2023 访问量:85

问:

我正在尝试更改热图与标准的距离和链接 欧几里得距离和完全链接到我家庭作业中问题的任何其他设置。

我们正在使用这个数据集:

library("flexclust")
data(milk)
help(milk)

这是我当前的代码:

hm3<-heatmap(milk_matrix, scale="column", main="Heat map of the Composition of Mammals' Milk", xlab= "Nutrient", ylab = "Animal", cexRow = 0.6, cexCol = 1.1, col=heat.colors(10))
legend(x= "bottomright", legend=c("min", "med", "max"),  cex = 0.6, fill=heat.colors(3))

热图的 R 帮助说您可以通过以下方式更改距离/链接:

distfun= 和 hclustfun=

但是我没有运气输入诸如 hclustfun= “single” 之类的东西。

任何帮助将不胜感激!我可以指定任何距离或链接,只要它不是欧几里得距离和完全链接。

亲切问候 罗茜:)

热图变化距离和联动

R 热图 欧几里得距离 联动

评论


答:

0赞 Meisam 5/21/2023 #1

对于 and 参数,您必须使用 and 中已有的选项(查看它们的帮助)。因此,例如,对于基于“最大”距离测量而不是默认的“欧几里得”,您可以使用以下命令:distfunhclustfunstats::dist()stats::hclust()distfun

# dist method must be one of "euclidean", "maximum", "manhattan", "canberra", "binary" or "minkowski"

heatmap(as.matrix(milk), 
        scale="column", 
        main="Heat map of the Composition of Mammals' Milk", 
        xlab= "Nutrient", 
        ylab = "Animal", 
        cexRow = 0.6, 
        cexCol = 1.1, 
        col=heat.colors(10),
        distfun = function(x) dist(x, method = "maximum"))
legend(x= "bottomright", legend=c("min", "med", "max"),  cex = 0.6, fill=heat.colors(3))

评论

0赞 Rosie Lomas 5/21/2023
谢谢,我使用了以下代码: ''' h3<- heatmap(milk_matrix, scale=“column”, main=“哺乳动物乳汁成分的热图”, xlab= “营养”, ylab = “动物”, cexRow = 0.6, cexCol = 1.1, col=heat.colors(10), distfun = function(x) dist(x, method = “minkowski”)) legend(x= “bottomright”, legend=c(“min”, “med”, “max”), cex = 0.6, fill=heat.colors(3)) ''' 它起作用了。但是我的图形与我用欧几里得距离创建的图形相同 - 这是意料之中的还是我做错了什么??
0赞 Meisam 5/22/2023
根据数据的不同,总体而言,两种聚类方法的结果可能相同。如果您不确定您的代码是否有效,请检查不同的方法,看看它们是否都产生相同的结果