Einstellung der Entfernungsmatrix und Clustering -Methoden in Heatmap.2
-
25-10-2019 - |
Frage
Heatmap.2 Standards für die Berechnung der Abstandsmatrix und zum HClust zum Clustering. Kann ich jetzt so einstellen, wie ich die euklidische Methode und HCLUST verwenden kann, um die Zentroidmethode zu verwenden? Ich habe ein kompilierbares Code -Probe bellor bereitgestellt. Ich habe es versucht: distfun = dist (method = "euclidean"), aber das funktioniert nicht. Irgendwelche Ideen?
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
)
Lösung
Blick auf den Code für heatmap.2
Ich bin mir ziemlich sicher, dass die Standardeinstellung verwendet wird dist
, und es ist standardmäßig, um euklidische Entfernungen zu verwenden.
Der Grund, warum Ihr Versuch, zu gehen distfun = dist(method = 'euclidean')
hat nicht funktioniert ist das distfun
(und hclustfun
) sollen einfach sein Name von Funktionen. Wenn Sie also Standardeinstellungen ändern und Argumente übergeben möchten, müssen Sie eine solche Wrapper -Funktion schreiben:
heatmap.2(...,hclustfun = function(x) hclust(x,method = 'centroid'),...)
Wie ich bereits erwähnte, bin ich mir ziemlich sicher, dass heatmap.2
Verwenden Sie standardmäßig euklidische Entfernungen, aber eine ähnliche Lösung kann verwendet werden, um die verwendete Entfernungsfunktion zu ändern:
heatmap.2(...,distfun = function(x) dist(x,method = 'euclidean'),...)