R 标记垂直和水平树状图

R 标记垂直和水平树状图,r,dendrogram,dendextend,R,Dendrogram,Dendextend,我是R新手,我正在尝试使用dist()和hclust()构建水平和垂直标记的树状图。我构建了六种不同的类型,但似乎无法添加标签。如果有人有任何建议,谢谢你 我尝试了许多不同的方法来标记这些树状图,但都没有成功,使用了as.dendrogram()、colnames()、rownames()和label()。然而,输出树状图有无意义的标签。我试着用“家族”-“X22”,“X4”,“X75”,“X87”来标记树状图。以下是所采用的不同方法,但均无效 以下是数据帧: Family SBI.CV.m

我是R新手,我正在尝试使用dist()和hclust()构建水平和垂直标记的树状图。我构建了六种不同的类型,但似乎无法添加标签。如果有人有任何建议,谢谢你

我尝试了许多不同的方法来标记这些树状图,但都没有成功,使用了as.dendrogram()、colnames()、rownames()和label()。然而,输出树状图有无意义的标签。我试着用“家族”-“X22”,“X4”,“X75”,“X87”来标记树状图。以下是所采用的不同方法,但均无效

以下是数据帧:

  Family SBI.CV.mean
1    X22    59.25926
2     X4    57.40741
3    X75    56.19918
4    X87    59.97886


library(dendextend)
family1$Family <- as.factor(family1$Family)
class(family1$Family)
str(family1)

family2 <- ddply(family1,.(Family), summarise, 
SBI.CV.mean =    mean(SBI.CV))
family2
class(family2)

par(mfrow = c(3,3))
x_dist <- dist(x=family2$SBI.CV, method="euclidean")
x_dist
class(x_dist)

x_dist <- read.table(header=T, text=c("X22", "X4", "X75", "X87"))
x_dist2=as.matrix(x_dist2, labels=TRUE,)
colnames(x_dist) <- rownames(x_dist) <- x_dist2[["X22","X4","X75","X87"]]
x_dist2
这些是我添加标签的尝试

require(graphics)
labs=paste(c("X22", "X4", "X75", "X87"), 1:4, sep="")
x_dist2 <- x_dist
x_dist2
colnames(x_dist2) <- labs
Dendro.data <- hclust(dist(x_dist2), "euclidean")
plot(as.dendrogram(Dendro.data), horiz=T)

require(graphics)
labs=paste(c("X22", "X4", "X75", "X87"), 1:4, sep="")
x_dist3 <- x_dist
colnames(x_dist3) <- labs
Dendro.data <- hclust(dist(x_dist3), "ave")
plot(as.dendrogram(x_dist3), hang=-1)
str(Dendro.data)

hc <- hclust(dist(family2$SBI.CV), "ave")
plot(hc)
plot(as.dendrogram(hc, hang=0.02), horiz = TRUE)

dend1 <- as.dendrogram(Dendro.data)
dend1
dend1_mod_01 <- dend1
dend1_mod_01 <- colour_branches(dend1_mod_01, k=2)
col_for_labels <- c("purple","purple","orange","purple",
"orange","dark   green")

dend_mod_01 <- color_labels(dend1_mod_01,col=col_for_labels)
plot(Dendro.data)
plot(dend1_mod_01)
require(图形)
实验室=粘贴(c(“X22”、“X4”、“X75”、“X87”),1:4,sep=“”)

x_dist2据我所知,您提出了两个问题,我将尝试回答这两个问题:

1) 如何控制dist对象中项目的名称

最简单的方法是控制用于生成dist的matrix/data.frame的行名。例如:

> 
> x <- data.frame(value = 6:9)
> x
  value
1     6
2     7
3     8
4     9
> rownames(x)
[1] "1" "2" "3" "4"
> # dist uses row names to indicate the relation between the items!
> # the default is a vector of integers, as the number of items:
> dist(x) 
  1 2 3
2 1    
3 2 1  
4 3 2 1
> 
> rownames(x) <- letters[1:4]
> x
  value
a     6
b     7
c     8
d     9
> rownames(x)
[1] "a" "b" "c" "d"
> # dist uses row names to indicate the relation between the items!
> # Now they are letters
> dist(x) 
  a b c
b 1    
c 2 1  
d 3 2 1
>
>x x
价值
1     6
2     7
3     8
4     9
>行名(x)
[1] "1" "2" "3" "4"
>#dist使用行名称表示项目之间的关系!
>#默认值为整数向量,如项目数:
>地区(x)
1 2 3
2 1    
3 2 1  
4 3 2 1
> 
>行名(x)x
价值
a 6
b 7
c 8
d 9
>行名(x)
[1] “a”“b”“c”“d”
>#dist使用行名称表示项目之间的关系!
>#现在它们是字母
>地区(x)
a、b、c
b 1
c 2 1
d 3 2 1
2) 如何控制树状图对象中项目的名称

为此,最好使用:

>x
价值
1     6
2     7
3     8
4     9
>地区(x)
1 2 3
2 1    
3 2 1  
4 3 2 1
>hc dend图(dend)
>#默认标签是dist中的名称:
>标签(dend)
[1] 1 2 3 4
>#使用Dendestend,我们可以更新它们:
>图书馆(Dendestend)
>标签(dend)标签(dend)
[1] “a”“b”“c”“d”
>地块(dend)
我希望这有帮助


塔尔

谢谢你塔尔,你帮了我大忙。
> 
> x <- data.frame(value = 6:9)
> x
  value
1     6
2     7
3     8
4     9
> rownames(x)
[1] "1" "2" "3" "4"
> # dist uses row names to indicate the relation between the items!
> # the default is a vector of integers, as the number of items:
> dist(x) 
  1 2 3
2 1    
3 2 1  
4 3 2 1
> 
> rownames(x) <- letters[1:4]
> x
  value
a     6
b     7
c     8
d     9
> rownames(x)
[1] "a" "b" "c" "d"
> # dist uses row names to indicate the relation between the items!
> # Now they are letters
> dist(x) 
  a b c
b 1    
c 2 1  
d 3 2 1
> x <- data.frame(value = 6:9)
> x
  value
1     6
2     7
3     8
4     9
> dist(x) 
  1 2 3
2 1    
3 2 1  
4 3 2 1
> hc <- hclust(dist(x))
> dend <- as.dendrogram(hc)
> plot(dend)
> # the default labels is the names in the dist:
> labels(dend)
[1] 1 2 3 4
> # Using dendextend we can update them:
> library(dendextend)
> labels(dend) <- letters[1:4]
> labels(dend)
[1] "a" "b" "c" "d"
> plot(dend)