“节点 '0' 没有位置 - 将节点位置分配给 networkX/Python 中的 'node types' 时出现问题

"node '0' has no position - problems with allocating node positions to 'node types' in networkX/Python

我正在尝试使用 networkX 绘制图形。

我定义的精确位置为:

pos={0:(40,100), 1:(50,100), 2:(45,80), 3:(55,80), 4:(50,60), 5:(50,40), 6:(50,20)}

然后我将节点分成两个 'types',所以假设节点 0、2、4、6 是 'type a' 和 1, 3、5是'type b'。我使用 append 函数将它们附加到两个不同的节点列表。所以现在我有两个不同的节点列表:type_atype_b 并且可以绘制它们 - 例如使用:

nx.draw_networkx_nodes(G, pos, nodelist=type_a, node_size=2000,node_shape="s", node_color='g', labels=exploit_node_labels, with_labels=True, alpha=1)

我的问题是在分配节点时能够将节点位置分配给节点。如何在将节点附加到两个不同列表时分配 'pos'?

这种方法给我的错误如下:

nx.draw_networkx_nodes(G, pos, nodelist=type_a, node_size=2000,node_shape="s", node_color='g', labels=exploit_node_labels, with_labels=True, alpha=1)
          File "C:\Program Files\Python36\lib\site-packages\networkx\drawing\nx_pylab.py", line 386, in draw_networkx_nodes
            raise nx.NetworkXError('Node %s has no position.'%e)

networkx.exception.NetworkXError: Node '0' has no position.

显然,图中的节点 G 是数字字符串,即 '0', '1','2'... 而不是整数 0,1,2... 但是,您正在定义位置使用 pos 使用整数而不是字符串。尝试按如下方式定义您的职位,它应该有效

pos={'0':(40,100), '1':(50,100), '2':(45,80), '3':(55,80), '4':(50,60), '5':(50,40), '6':(50,20)}