【问题标题】:Edge between all nodes in NetworkX GraphNetworkX Graph中所有节点之间的边
【发布时间】:2016-07-04 19:36:19
【问题描述】:

我可以在任意两个单独的节点之间添加一条边,如下所示:

G.add_edge(node1, node)

但是如果我想在任何两个节点之间进行边缘化(所有节点都应该彼此相邻),那么当采用大量节点时会变得很困难。

示例: 如果数字是节点是四个,它们是 1,2,3,4.The Graph 应该看起来像这样

对于上图,我添加如下节点:

graph = [(1, 2),(1, 3),(1, 4), (2, 3),(2, 4), (3, 4)]
for edge in graph:
        G.add_edge(edge[0], edge[1])

图表构造中是否有任何默认选项作为我的要求的参数?

基本上我需要为给定的节点构造一个集团。

谢谢

【问题讨论】:

    标签: python matplotlib graph networkx


    【解决方案1】:

    根据您的描述,我认为您正在尝试制作完整的图表。 Networkx 有一个内置的方法来创建一个完整的图表。

    import networkx as nx
    G=nx.complete_graph(4)
    G.edges()
    >[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)]
    

    如果您不想将节点命名为0,1,2,3,则可以将G 中的节点重命名为其他名称。按照上面的命令:

    nodenames = ['a', 'b', 'c', 'd']
    mapping = {i:nodename for i,nodename in enumerate(nodenames)}
    #now mapping looks like {0:'a', 1:'b', ...}
    H=nx.relabel_nodes(G,mapping)
    H.edges()
    > [('a', 'c'), ('a', 'b'), ('a', 'd'), ('c', 'b'), ('c', 'd'), ('b', 'd')]
    

    (注意 - 我不喜欢我用来定义 mapping 的字典理解 - 如果有人能给我一个不需要枚举的更直接的版本,我将不胜感激。

    【讨论】:

    • 是的,它解决了我的问题,谢谢 Joel,如果我们可以将节点作为参数传递而不是重新标记它们,那将会很有用。
    猜你喜欢
    • 2022-06-16
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2021-07-29
    • 1970-01-01
    • 2019-10-11
    相关资源
    最近更新 更多