r - igraph 或 ggnet2 的水平 TreeMap

标签 r tree igraph

我正在尝试使用 igraphggnet2 从维基百科重现概率 TreeMap ,如下所示。以下是我的开始,

library(igraph)
g <- graph.tree(2^4-1, 2)

library(GGally)
ggnet2(g, label = TRUE, label.size = 3)

随机放置节点,用数字标记它们,边缘没有标签:

enter image description here

相反,我需要像这样重新组织和标记边缘和节点,除了将节点标签放在圆圈内:

enter image description here

最佳答案

这是我的解决方案:

library(igraph)

g <- graph.tree(n = 2 ^ 3 - 1, children = 2)
node_labels <- c("", "P(A)", "P(A')", "P(AB)", "P(AB')", "P(A'B)", "P(A'B')")
edge_labels <- c("P(A)", "P(A')", "P(B|A)", "P(B'|A)", "P(B|A')", "P(B'|A')")

layout <- layout.reingold.tilford(g)
layout <- -layout[,2:1]                    # rotate layout using negative and 
                                        # reverse columns of default
plot(g,
     layout = layout,                   # draw graph as tree
     vertex.size = 25,                  # node size
     vertex.color = '#C4D8E2',          # node color
     vertex.label = node_labels,        # node labels
     vertex.label.cex = .5,             # node label size
     vertex.label.family = "Helvetica", # node label family
     vertex.label.font = 2,             # node label type (bold)
     vertex.label.color = '#000000',    # node label color
     edge.label = edge_labels,          # edge labels
     edge.label.cex = .7,               # edge label size
     edge.label.family = "Helvetica",   # edge label family
     edge.label.font = 2,               # edge label font type (bold)
     edge.label.color = '#000000',      # edge label color
     edge.arrow.size = .5,              # arrow size
     edge.arrow.width = .5              # arrow width
) 

这给了我这个,

Horizontal Probability tree

关于r - igraph 或 ggnet2 的水平 TreeMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48362636/

相关文章:

r - 在 Shiny 的应用程序中以模式生成进度条,自动关闭

r - ggplot 中带有 facet 的变量 hline

r - 使用二进制变量创建计数器

python - 递归 Excel 文件以从树结构中查找顶级项目

r - 如何找到 "direct"的连通分量?

r - 用 igraph 绘制社区

R - 如果有的话如何集成到 dplyr 中?

algorithm - 删除 BK 树中的节点

parsing - 左递归和右递归是否产生相同的解析树?

r - R中的网络模块化计算