我有一个树中的叶子列表和我希望它们合并的高度,即它们最近的共同祖先的高度。所有的叶子都假定高度为0。一个简单的例子可能像这样:
as.data.frame(rbind(c("a","b",1),c("c","d",2),c("a","d",4)))
V1 V2 V3
1 a b 1
2 c d 2
3 a d 4
我想画一个树来表示这些数据。我知道R可以画出来自hclust
的树。如何将数据转换为hclust
返回的格式或其他易于绘制的格式?
编辑添加图表:
上面数据集的树是这样的:
__|___
| |
| _|_
_|_ | |
| | | |
a b c d
您所拥有的是已经指定的分层聚类(以您自己的数据格式约定),并且您希望使用R的绘图工具。这似乎并不容易。我现在能看到的实现这一点的唯一方法是创建一个对象,例如由hclust返回的对象。它有属性"merge","height","order","labels","method","call","dist.method",这些都很容易理解。有人已经试过了:https://stat.ethz.ch/pipermail/r-help/2006-February/089170.html,但显然仍然有问题。您还可以尝试用与您的聚类一致的虚拟值填充距离矩阵,然后将其提交给聚类。例如
a <- matrix(ncol=4,nrow=4, c(0,1,4,4,1,0,4,4,4,4,0,2,4,4,2,0))
b <- hclust(as.dist(a), method="single")
plot(b, hang=-1)