réglage matrice de distance et les méthodes de clustering dans heatmap.2
-
25-10-2019 - |
Question
par défaut heatmap.2 à dist pour calculer la matrice de distance et hclust de clustering. Est-ce que quelqu'un maintenant comment je peux mettre dist utiliser la méthode euclidienne et hclust d'utiliser la méthode barycentre? J'ai fourni un exemple de code compilable ci-dessous. J'ai essayé: distfun = dist (méthode = "euclidien"), mais cela ne fonctionne pas. Toutes les idées?
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
)
La solution
le code Jetant pour heatmap.2
Je suis assez sûr que la valeur par défaut est d'utiliser dist
, et par défaut de c'est à son tour d'utiliser des distances euclidiennes.
La raison pour laquelle votre tentative de distfun = dist(method = 'euclidean')
passage n'a pas fonctionné est que distfun
(et hclustfun
) sont censés être simplement nom de fonctions. Donc, si vous voulez par défaut modifier et passer des arguments que vous devez écrire une fonction wrapper comme ceci:
heatmap.2(...,hclustfun = function(x) hclust(x,method = 'centroid'),...)
Comme je l'ai dit, je suis assez certain que heatmap.2
utilise des distances euclidiennes par défaut, mais une solution similaire peut être utilisée pour modifier la fonction de distance utilisée:
heatmap.2(...,distfun = function(x) dist(x,method = 'euclidean'),...)