代码之家  ›  专栏  ›  技术社区  ›  Nishant Sharma

networkx获取节点位置

  •  0
  • Nishant Sharma  · 技术社区  · 6 年前
    import networkx as nx
    %Matplotlib内联
    将matplotlib.pyplot导入为plt
    
    g2=nx.有向图()
    g2.添加节点(900,pos=(0,0))
    g2.添加节点(901,pos=(1,0))
    g2.添加节点(902,pos=(0,1))
    g2.添加节点(903,pos=(1,1))
    g2.添加节点(904,pos=(0,-1))
    
    nodepos=nx.圆形布局(g2)
    打印(“nodepos:\n”,nodepos)
    
    nx.draw_networkx(g2,其中_labels=true)
    请显示())
    
    
    

    上面的代码创建下面显示的带有节点位置的图:

    节点:

    900:数组([1.,0.]),901:数组([0.30901699,0.95105652]),902:数组([-0.80901699,0.58778525]),903:数组([-0.80901699,-0.58778525]),904:数组([0.30901699,-0.95105652]);

    问题:

    a)节点900的位置为0,0,但该节点的x似乎大于0.8…同样,904的y值为-1,但坐标系在任何地方都不显示-1。

    b)nx.circular_layout()应该返回节点的位置,这就是我在nodepos中打印的内容。但是,我不理解nodepos中打印的值。为什么我会看到十进制值,也会看到负值。

    我的目的是获取节点的正确位置,这样我就可以在QT/Java等……

    上面的代码创建下图所示的节点位置:

    enter image description here

    节点:

    900:数组([1.,0.]),901:数组([0.30901699,0.95105652]),902:数组([-0.80901699,0.58778525]),903:数组([-0.80901699,-0.58778525]),904:数组([0.30901699,-0.95105652]);

    问题:

    a)节点900的位置为0,0,但该节点的x似乎大于0.8…同样,904的y值为-1,但坐标系在任何地方都不显示-1。

    b)nx.circular_layout()应该返回节点的位置,这就是我在nodepos中打印的内容。但是,我不理解nodepos中打印的值。为什么我看到十进制值,也看到负值。

    C)我的目的是得到正确的节点位置,这样我就可以在QT/Java等中完成它的图形绘制。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Gambit1614    6 年前

    您需要添加 pos argument for nx.draw_networkx graph,like this

    import networkx as nx
    %Matplotlib内联
    将matplotlib.pyplot导入为plt
    
    g2=nx.有向图()
    g2.添加节点(900,pos=(0,0))
    g2.添加节点(901,pos=(1,0))
    g2.添加节点(902,pos=(0,1))
    g2.添加节点(903,pos=(1,1))
    g2.添加节点(904,pos=(0,-1))
    
    nodepos=nx.圆形布局(g2)
    打印(“nodepos:\n”,nodepos)
    #('nodepos:\n',904:数组([1.00000000 E+00,2.38418583E-08]),
    #900:数组([0.30901696,0.95105658]),901:数组([-0.80901709,0.58778522]),
    #902:数组([-0.80901698,-0.58778535]),903:数组([0.30901711,-0.95105647]);
    
    nx.draw_networkx(g2,其中_labels=true,pos=nodepos)
    请显示())
    

    您可以在这里阅读pos的文档argument

    pos(dictionary,可选)_“节点作为键,位置作为值的字典。如果未指定,将计算弹簧布局位置。

    enter image description here

    您可以阅读文档销售时点情报系统争论here,上面写着

    pos(dictionary,可选)_“节点作为键,位置作为值的字典。如果未指定,将计算弹簧布局位置。