jon*_*s87 15 r distribution heatmap hclust
heatmap.2默认为dist用于计算距离矩阵和hclust用于聚类.现在有人怎么设置dist来使用欧几里德方法和hclust来使用质心方法?我提供了一个可编译的代码示例.我尝试过:distfun = dist(method ="euclidean"),但这不起作用.有任何想法吗?
library("gplots")
library("RColorBrewer")
test <- matrix(c(79,38.6,30.2,10.8,22,
81,37.7,28.4,9.7,19.9,
82,36.2,26.8,9.8,20.9,
74,29.9,17.2,6.1,13.9,
81,37.4,20.5,6.7,14.6),ncol=5,byrow=TRUE)
colnames(test) <- c("18:0","18:1","18:2","18:3","20:0")
rownames(test) <- c("Sample 1","Sample 2","Sample 3", "Sample 4","Sample 5")
test <- as.table(test)
mat=data.matrix(test)
heatmap.2(mat,
dendrogram="row",
Rowv=TRUE,
Colv=NULL,
distfun = dist,
hclustfun = hclust,
xlab = "Lipid Species",
ylab = NULL,
colsep=c(1),
sepcolor="black",
key=TRUE,
keysize=1,
trace="none",
density.info=c("none"),
margins=c(8, 12),
col=bluered
)
Run Code Online (Sandbox Code Playgroud)
jor*_*ran 28
浏览代码heatmap.2我很确定默认使用dist,默认情况下是使用欧几里德距离.
你尝试传递distfun = dist(method = 'euclidean')不起作用的原因是distfun(和hclustfun)应该只是函数的名称.所以如果你想改变默认值并传递参数,你需要编写一个这样的包装函数:
heatmap.2(...,hclustfun = function(x) hclust(x,method = 'centroid'),...)
Run Code Online (Sandbox Code Playgroud)
正如我所提到的,我相当肯定heatmap.2默认使用欧氏距离,但可以使用类似的解决方案来改变所使用的距离函数:
heatmap.2(...,distfun = function(x) dist(x,method = 'euclidean'),...)
Run Code Online (Sandbox Code Playgroud)