2013-03-27 88 views
2

切片树有谁知道是否有R中包装或简单的方法来创建下列形式的树结构:创建R中

enter image description here

我不是在寻找一种方式来创建一个像上面那样好的情节。我最大的问题是找到一种方法来处理这样一棵树,在节点,树叶和子节点之间有明显的区别。例如,我希望能够通过调整字符串或矢量来切换两个叶子。所以我想这主要是一个'数据存储'问题。

我一直在寻找相当一段时间,并偶然发现了一个名为'Dendrogram'的软件包。这个包的问题是(据我所知)它不允许标记内部节点,如'H'和'V'。只有最后的叶子可以带有值或字符串。

我发现的另一个软件包是'rpart',但我认为这些软件只对回归树有用。

如果有人知道的东西,我将非常感谢帮助!

+1

嗨我应该补充一点,因为你是新来的,你可能想阅读[** about **](http://stackoverflow.com/about)和[** faq **](http:/ /stackoverflow.com/faq)了解SO的工作原理。如果您收到解决问题的答案,您可以通过单击小号复选标记来接受它,所以StackOverflow对每个人都更有价值。你绝对没有义务这样做,但如果答案确实解决了你的问题,那么这是一种“回馈”网站的好方法。 – 2013-03-27 16:11:52

回答

1

如果你有一个EdgeList都可以做一些非常呈三角与IGRAPH:

el <- matrix(c("H" , "V" , "H" , "V2" , "V" , "1" , "V" , "V3" , "V3" , "3" , "V3" , "4" , "V2" , "2" , "V2" , "H2") , ncol = 2 , byrow = TRUE) 
g <- graph.edgelist(el , directed = TRUE) 
V(g)$label <- get.vertex.attribute(g, 'name') 
plot(g,layout=layout.reingold.tilford) 

您也可以命名您在el命令字母的节点,然后使用get.vertex.attribute(g, 'name')见得到的节点被称为什么,然后传递你喜欢的任何字符矢量来获得标签,因为它们在图片中。 enter image description here

+1

你可以上传到网络并粘贴链接你得到? (我意识到你没有代表还没有包括图片)。尝试使用[imgur.com](http://imgur.com/)。你有没有收到任何错误信息?你也可以将'sessionInfo()'的输出粘贴到你的代码块中,然后我们可以试着找出它的不同之处。 – 2013-03-27 16:09:36

+0

感谢您的快速回复,这看起来非常有前途! 虽然我有一个问题。当我简单地复制上面提供的代码时,R会创建一个看起来完全不同的图。设置定向= FALSE属性提高了图形一点,但它仍然是一个很大的不同: http://s22.postimg.org/uwzzrggj5/Trees.png 按照IGRAPH网站莱因戈尔德蒂尔福德布局应该做的技巧,但由于某种原因,它不是以正确的方式从上到下创建图表。 – Arno 2013-03-27 16:14:14

+0

SessionInfo()给出以下输出: ř版本2.13.2(2011-09-30) 平台:x86_64的-PC-的mingw32/64(64位) 区域设置: [1] = LC_COLLATE Dutch_Netherlands.1252 LC_CTYPE = Dutch_荷兰1252 [3] LC_MONETARY = Dutch_荷兰1252 LC_NUMERIC = C [5] LC_TIME = Dutch_荷兰。1252个 附基础包: [1]统计图形grDevices utils的数据集的方法基础 其他附软件包: [1] igraph_0.6.5-1 – Arno 2013-03-27 16:15:21

1

是的,rpart可能不适合您的需要。试试phylobase包。

如果你的树可以从文件中读取,那么你可以使用某种类型的XML树解析器,如this