0

我正在尝试控制树状图的顺序和颜色。显然,树状图的重点是按相似性排序,但在分支中,我想设置一个有意义的顺序(字母数字)。

library(vegan)
library(stats) 

x <-data.frame(data = c(1:10)) 
y = data.frame(type = c("A","B","C","A","C","D","A","B","C","B"), site_name = c("A1","B1","C1","A2","C2","D1","A3","B2","C3","B3"))  
row.names(x) = y$site_name 
dis = vegdist(x) 
hc <- hclust(dis) 
dd <- as.dendrogram(hc) 
plot(dd)

在此处输入图像描述

我的数据标签是文本,但它们确实在变量中列出了固定顺序

site_order = c("A1","A2","A3","B1","B2","B3","C1","C2","C3","D1")

1)我想找到一个根据site_order分支内对树状图进行排序的解决方案。

例如 A1,B1,A2,C1,C2,D2,A3,B2,B3,C3

我还想使用site_type 例如(A=红色圆圈,B=蓝色正方形,C=绿色三角形,D=黄色十字) 对标签进行着色和形状

这可能吗?

4

1 回答 1

0

这是使用rotate来自 dendextend 的函数完成的最佳工作。

library(vegan)
library(stats) 

x <-data.frame(data = c(1:10)) 
y = data.frame(type = c("A","B","C","A","C","D","A","B","C","B"), site_name = c("A1","B1","C1","A2","C2","D1","A3","B2","C3","B3"))  
row.names(x) = y$site_name 
dis = vegdist(x) 
hc <- hclust(dis) 
dd <- as.dendrogram(hc) 

par(mfrow = c(1,2))
plot(dd, main = "orig")

library(dendextend)
dd2 <- rotate(dd, sort(labels(dd)) )
plot(dd2, main = "as sorted as possible \n(under the constraints)")

输出:

在此处输入图像描述

您可以从在线小插图了解更多关于 dendextend 包的信息。

于 2017-10-14T20:18:29.573 回答