【问题标题】:networkx - unknown node position errornetworkx - 未知节点位置错误
【发布时间】:2012-12-03 21:27:30
【问题描述】:

我刚刚开始使用 networkx 并正在使用它来构建有根树。抱歉,如果这是一个微不足道的问题,我无法在其他地方找到解决方案。使用以下代码,我得到错误 networkx.exception.NetworkXError: Node 4 has no position。 (在 draw_networkx_nodes 中)。

import networkx as nx 
import matplotlib.pyplot as plt
G = nx.DiGraph() 
G.add_node(1)
G.add_node(2)
G.add_node(3)
G.add_node(4)
G.add_node(5)
G.add_node(6)
G.add_edge(1,2) 
G.add_edge(1,3)
G.add_edge(2,5)
G.add_edge(2,6)
G.add_edge(3,4)
plt.title("Test") 
pos=nx.graphviz_layout(G,prog='dot') 
nx.draw(G,pos,with_labels=False,arrows=False) 
plt.savefig('nx_test.png') 

一旦我创建节点 4,就会发生这种情况。例如,当我有节点 1 到 4 以及边 1,2 1,3 和 2,4 时,我会遇到同样的错误。代码工作正常,直到我有节点 4(有 3 个节点它工作得很好)。无论我指定边缘的顺序如何,都会发生这种情况。

如果我直接指定边缘,我会得到同样的错误:

    >>> G4 = nx.DiGraph([(1, 2), (1, 3), (2, 5), (2, 6), (3, 4)])
    >>> nx.draw(G4,pos,with_labels=False,arrows=False) 


    Traceback (most recent call last):
       File "<stdin>", line 1, in <module>
      File "/usr/local/lib/python2.7/dist-packages/networkx-1.7-py2.7.egg/networkx/drawing/nx_pylab.py", line 133, in draw
        draw_networkx(G,pos=pos,ax=ax,**kwds)
      File "/usr/local/lib/python2.7/dist-packages/networkx-1.7-py2.7.egg/networkx/drawing/nx_pylab.py", line 266, in draw_networkx
        node_collection=draw_networkx_nodes(G, pos, **kwds)
      File "/usr/local/lib/python2.7/dist-packages/networkx-1.7-py2.7.egg/networkx/drawing/nx_pylab.py", line 373, in draw_networkx_nodes
        raise nx.NetworkXError('Node %s has no position.'%e)
       networkx.exception.NetworkXError: Node 4 has no position.

谢谢

【问题讨论】:

  • 对我来说很好 - 如果你只是从边缘构造,你会得到同样的结果吗 - 例如:G = nx.DiGraph([(1, 2), (1, 3), (2, 5), (2, 6), (3, 4)])(PS:改变了缩进,所以它更容易复制/粘贴)
  • 是的,我得到了同样的错误(编辑问题以包含该错误)
  • 啊 - 所以与节点无关 - 图表很好 - 绘制不起作用 - 所以This occurs as soon as I create node 4实际上并非如此
  • 是的。以下代码有效: 初始化如上 G.add_node(1) G.add_node(2) G.add_node(3) G.add_edge(1,2) G.add_edge(1,3) 绘制如上。这也适用 G = nx.DiGraph([(1, 2), (1, 3)])
  • 打印 pos 字典,看看你得到了什么。如果它缺少节点 4 作为键,那么 graphviz_layout 代码有问题。

标签: python graph graphviz networkx


【解决方案1】:

这是由于两件事造成的:1)graphviz 安装不正确,从头开始重新安装清除了错误。

其次是行

       pos=nx.graphviz_layout(G,prog='dot') 

必须始终在绘制图形之前放置(并重复),以考虑新的节点/边。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    相关资源
    最近更新 更多