首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在networkx中使用家庭结构

在networkx中使用家庭结构
EN

Stack Overflow用户
提问于 2022-08-08 09:07:44
回答 1查看 49关注 0票数 0

我试图表现和遍历图表,以显示和控制家庭关系。我已经能够建立的边,以作出以下的图(How to draw a tree more beautifully in networkx加上无数其他人已经让我这么远-我的红色数字,当然)

因此,我理解这是一个有向图,上面显示了父关系。我希望能够使用networkx获得更多的信息,但我还没有想出如何接近它。如果人们有这样的文档/教程,我甚至会选择一些好的文档/教程,但我正在尝试解决以下问题:

  1. ,我已经能够识别出那些也是父母的孩子,我能把这些分割成不同的图表吗?例如,2,3,6,7,8,9,10,11,12是一个“家庭”,5,9,15是另一个“家庭”,1,5也是一个家庭

  1. 可以用颜色或其他方式显示世代。我在这里看到了3代人(1,2,3和4-12,13-15)我相信我可以用拓扑排序来找到这些顺序,但是当我得到4个节点,然后是8然后3,而不是3,9,3
EN

回答 1

Stack Overflow用户

发布于 2022-08-08 10:59:44

W.r.t.2):拓扑排序总是将一个节点放在最高的可能层中,这就是为什么在您的情况下,节点4被放置在顶层(想必)。相反,您可以将y值从点布局映射到一个层。如果这对您来说太麻烦了,您可以显式地计算分层布局。这两种方法都概述了here

W.r.t.1)您似乎完全基于父子关系来定义“家庭”,所以您所需要做的就是计算每个节点的前辈,然后进行聚合。与…有关的东西:

代码语言:javascript
运行
复制
families = dict() # maps parents to children
for child in G:
    parents = tuple([predecessor for predecessor, target in nx.predecessor(G, child, cutoff=1).items() if target != []])
    if parents in families:
        families[parents].append(child)
    else: 
        families[parents] = [child]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73275385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档