如何在R中以图形方式显示简单的树 [英] How to display a simple tree in R graphically

查看:9
本文介绍了如何在R中以图形方式显示简单的树的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有如下数据:

in  out
1   3
2   3

这表示以下树结构:

    1     2
       /
       3

每棵树都将由这样的子树组成,其中有两个源(in)和一个目标(out)。稍微复杂一点的树是:

in  out
1   3
2   3
3   5
4   5

表示此树的名称:

    1    2
       /
       3    4
         /
         5
因此,每个树的顶部将恰好包含2个节点,而底部将恰好包含1个节点,而介于两者之间的每个级别将恰好包含2个节点。这可能有很多层面。最后一个例子:

in  out
1   3
2   3
3   5
4   5
5   7
6   7

表示此树的名称:

    1    2                     level 1
       /
       3    4                  level 2
         /
         5    6                level 3
           /
           7                   level 4

我怎样才能把这些树画得很漂亮?我无法使用ggtree,因为我必须使用的R版本不支持它。我已经查看了igraphgraph.tree,但到目前为止还不知道如何操作。

如果这很重要,我会很高兴把它画得颠倒,而不是像上面那样--或者从左到右。

推荐答案

输入是边缘列表,因此我们可以将其转换为图形对象,然后使用指示的布局对其进行绘制。LAY是一个给出顶点坐标的两列矩阵,涉及LAY的矩阵乘法求反其第二列,从而使其反转。

library(igraph)

DF <- data.frame(in. = 1:6, out. = c(3, 3, 5, 5, 7, 7)) # input

g <- graph_from_edgelist(as.matrix(DF[2:1]))
lay <- layout_as_tree(g)
plot(as.undirected(g), layout = lay %*% diag(c(1, -1)))

这篇关于如何在R中以图形方式显示简单的树的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆