当前位置: 首页 > 知识库问答 >
问题:

带igraph或ggnet2的水平树形图

邢财
2023-03-14

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

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

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

它随机放置节点,以数字方式标记它们,并且边缘没有标签:

相反,我需要重新组织并标记边和节点,就像这样,只是将节点标签放在圆圈内:

共有1个答案

管炳
2023-03-14

我的解决方案是:

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
) 

这给了我这个,

 类似资料:
  • 我有网络数据的数据如下: 当我用R绘制它时,我写的代码如下: 我得到这样的输出: 我想要这样的输出:

  • 新加入WPF的我正尝试使用TreeView,它提供的灵活性给我留下了难以置信的印象。 到目前为止,我的每个treeview项目都实现了一个扩展器,这是显示每个项目更详细信息并让标题仅显示摘要的好方法。但是,这不适合叶项目,并且浪费了屏幕空间——我的treeview中的每个叶项目(其中有许多)显示的数据量相对较小。 我想要为叶项目实现的是水平包装,而不是垂直列表。设想显示一个网格或(stackpan

  • 为了遍历通用树,我为下面链接中提到的代码编写了以下显示函数。问题是每个级别打印两次。有人能告诉我为什么吗。如果有人需要整个实现,可以在下面的链接中找到没有此函数的原始代码。其他人只需查看下面的displayBFS函数,并告诉我为什么值会重复 java中泛型树(n元树)的级顺序遍历 谢谢 目前的树状结构可供参考: 输出:100 90 50 70 90 50 70 20 30 200 300 20 3

  • 我想做的从右到左滚动与我猜将是一个recylcer视图,但不确定是否是这个。我只是需要有人给我指明正确的方向。我想我需要一个内部布局的回收视图。 如果有人能指点我在哪里找到答案,我会变得很伟大!

  • 我正在使用MPAndroidChart库。在条形图中,默认情况下,所有条形图都是垂直的(自下而上),如何水平显示?

  • 问题内容: 我正在尝试使用创建水平堆叠的条形图,但是我看不到如何使条形实际堆叠,而不是全部从y轴开始。 这是我的测试代码。 看到tcaswell的评论后,编辑使用kwarg。 这似乎是正确的方法,但是如果没有特定条形的数据,则尝试失败,因为它正尝试添加到随后返回的值。 问题答案: 由于您使用的是熊猫,因此值得一提的是,您可以在本地进行堆积条形图: 请参阅 文档的可视化部分。