&引用;节点';0';没有位置-将节点位置分配给';节点类型';在networkX/Python中

&引用;节点';0';没有位置-将节点位置分配给';节点类型';在networkX/Python中,python,position,nodes,networkx,Python,Position,Nodes,Networkx,我正试图用networkX绘制一个图表 我已将准确位置定义为: pos={0:(40,100), 1:(50,100), 2:(45,80), 3:(55,80), 4:(50,60), 5:(50,40), 6:(50,20)} 然后我将节点分为两种“类型”,假设节点0、2、4、6是类型a',节点1、3、5是类型b'。我使用append函数将它们附加到两个不同的节点列表中。现在我有了两个不同的节点列表:type_a和type_b并可以绘制它们-例如使用: nx.draw_networkx_n

我正试图用networkX绘制一个图表

我已将准确位置定义为:

pos={0:(40,100), 1:(50,100), 2:(45,80), 3:(55,80), 4:(50,60), 5:(50,40), 6:(50,20)}
然后我将节点分为两种“类型”,假设节点0、2、4、6是类型a',节点1、3、5是类型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)}