Comment puis-je créer manuellement un objet dendrogramme (ou « hclust »)? (En R)
-
22-09-2019 - |
Question
J'ai un dendrogramme donné à moi comme images. Comme il est pas très grand, je peux la construire « à la main » dans un objet R.
Alors, ma question est de savoir comment puis-je créer manuellement un dendrogramme (ou « hclust ») objet lorsque j'ai est l'image dendrogramme?
Je vois qu'il ya une fonction appelée « as.dendrogram » Mais je ne pouvais pas trouver un exemple sur la façon de l'utiliser.
(ps: Ce poste suit ma question )
Merci, Tal
La solution
Je pense que vous êtes mieux de créer un objet hclust
, puis le convertir en un dendrogramme en utilisant as.dendrogram
, puis essayer de créer un dendrogramme directement. Regardez la page d'aide ?hclust
pour voir la signification des éléments d'un objet hclust
.
Voici un exemple simple avec quatre feuilles A, B, C et D, combinant premier AB, puis CD, et enfin AB-CD:
a <- list() # initialize empty object
# define merging pattern:
# negative numbers are leaves,
# positive are merged clusters (defined by row number in $merge)
a$merge <- matrix(c(-1, -2,
-3, -4,
1, 2), nc=2, byrow=TRUE )
a$height <- c(1, 1.5, 3) # define merge heights
a$order <- 1:4 # order of leaves(trivial if hand-entered)
a$labels <- LETTERS[1:4] # labels of leaves
class(a) <- "hclust" # make it an hclust object
plot(a) # look at the result
#convert to a dendrogram object if needed
ad <- as.dendrogram(a)
Autres conseils
Manuel complètement ... pas recommandé pour les grands ensembles de données.
tree<-list();
attributes(tree)<-list(members=18,height=3);
class(tree)<-"dendrogram";
tree[[1]]<-list();
attributes(tree[[1]])<-list(members=4,height=2,edgetext="1");
tree[[1]][[1]]<-list();
attributes(tree[[1]][[1]])<-list(members=2,height=1,edgetext="H");
tree[[1]][[1]][[1]]<-list();
attributes(tree[[1]][[1]][[1]])<-list(members=1,height=0,edgetext="H",label="1HH",leaf=TRUE);
tree[[1]][[1]][[2]]<-list();
attributes(tree[[1]][[1]][[2]])<-list(members=1,height=0,edgetext="T",label="1HT",leaf=TRUE);
tree[[1]][[2]]<-list();
attributes(tree[[1]][[2]])<-list(members=2,height=1,edgetext="T");
tree[[1]][[2]][[1]]<-list();
attributes(tree[[1]][[2]][[1]])<-list(members=1,height=0,edgetext="H",label="1TH",leaf=TRUE);
tree[[1]][[2]][[2]]<-list();
attributes(tree[[1]][[2]][[2]])<-list(members=1,height=0,edgetext="T",label="1TT",leaf=TRUE);
tree[[2]]<-list();
attributes(tree[[2]])<-list(members=2,height=2,edgetext="2");
tree[[2]][[1]]<-list();
attributes(tree[[2]][[1]])<-list(members=1,height=0,edgetext="H",label="2H",leaf=TRUE);
tree[[2]][[2]]<-list();
attributes(tree[[2]][[2]])<-list(members=1,height=0,edgetext="T",label="2T",leaf=TRUE);
tree[[3]]<-list();
attributes(tree[[3]])<-list(members=4,height=2,edgetext="3");
tree[[3]][[1]]<-list();
attributes(tree[[3]][[1]])<-list(members=2,height=1,edgetext="H");
tree[[3]][[1]][[1]]<-list();
attributes(tree[[3]][[1]][[1]])<-list(members=1,height=0,edgetext="H",label="3HH",leaf=TRUE);
tree[[3]][[1]][[2]]<-list();
attributes(tree[[3]][[1]][[2]])<-list(members=1,height=0,edgetext="T",label="3HT",leaf=TRUE);
tree[[3]][[2]]<-list();
attributes(tree[[3]][[2]])<-list(members=2,height=1,edgetext="T");
tree[[3]][[2]][[1]]<-list();
attributes(tree[[3]][[2]][[1]])<-list(members=1,height=0,edgetext="H",label="3TH",leaf=TRUE);
tree[[3]][[2]][[2]]<-list();
attributes(tree[[3]][[2]][[2]])<-list(members=1,height=0,edgetext="T",label="3TT",leaf=TRUE);
tree[[4]]<-list();
attributes(tree[[4]])<-list(members=2,height=2,edgetext="4");
tree[[4]][[1]]<-list();
attributes(tree[[4]][[1]])<-list(members=1,height=0,edgetext="H",label="4H",leaf=TRUE);
tree[[4]][[2]]<-list();
attributes(tree[[4]][[2]])<-list(members=1,height=0,edgetext="T",label="4T",leaf=TRUE);
tree[[5]]<-list();
attributes(tree[[5]])<-list(members=4,height=2,edgetext="5");
tree[[5]][[1]]<-list();
attributes(tree[[5]][[1]])<-list(members=2,height=1,edgetext="H");
tree[[5]][[1]][[1]]<-list();
attributes(tree[[5]][[1]][[1]])<-list(members=1,height=0,edgetext="H",label="5HH",leaf=TRUE);
tree[[5]][[1]][[2]]<-list();
attributes(tree[[5]][[1]][[2]])<-list(members=1,height=0,edgetext="T",label="5HT",leaf=TRUE);
tree[[5]][[2]]<-list();
attributes(tree[[5]][[2]])<-list(members=2,height=1,edgetext="T");
tree[[5]][[2]][[1]]<-list();
attributes(tree[[5]][[2]][[1]])<-list(members=1,height=0,edgetext="H",label="5TH",leaf=TRUE);
tree[[5]][[2]][[2]]<-list();
attributes(tree[[5]][[2]][[2]])<-list(members=1,height=0,edgetext="T",label="5TT",leaf=TRUE);
tree[[6]]<-list();
attributes(tree[[6]])<-list(members=2,height=2,edgetext="6");
tree[[6]][[1]]<-list();
attributes(tree[[6]][[1]])<-list(members=1,height=0,edgetext="H",label="6H",leaf=TRUE);
tree[[6]][[2]]<-list();
attributes(tree[[6]][[2]])<-list(members=1,height=0,edgetext="T",label="6T",leaf=TRUE);
windows(width=3,rescale="fixed");
par(ps=8);
plot(rev(tree),center=TRUE,horiz=TRUE);