python 节点_Python-Networkx-使用节点列表绘制节点时出现...

在尝试使用NetworkX根据节点列表绘制图形时,遇到了'Node %s has no position.'的错误。代码中创建了一个图G,并添加了边,然后使用kamada_kawai_layout获取节点位置。在尝试绘制节点时,对于'flattened_list_nodes'列表中的节点,遇到了没有位置的问题。寻求解决方案。
摘要由CSDN通过智能技术生成

我有一个这样的嵌套元组:

mostfrequent = (('16.37.97.17', '178.237.19.228', '55177', '443', '6', '1', '46'), ('16.37.97.17', '178.237.17.97', '44492', '443', '6', '1', '46'), ('16.37.97.29', '178.237.17.61', '56326', '443', '6', '1', '46'), ('16.37.97.222', '104.131.44.62', '60179', '80', '6', '2', '620'), ('16.37.93.196', '16.37.157.74', '2049', '691', '6', '1', '100'))

我想用通过nodelist声明的networkx来绘制每个子元组的每个元素:

nx.draw_networkx_nodes(G, pos, nodelist=flattened_list_nodes, node_size=1600, node_color='blue', alpha=0.6)

为此,我将元组A展平为一个列表(每个元素仅出现一次):

flattened_list_nodes = ['16.37.97.17', '178.237.19.228', '55177', '443', '6', '1', '46', '178.237.17.97', '44492', '16.37.97.29', '178.237.17.61', '56326', '16.37.97.222', '104.131.44.62', '60179', '80', '2', '620', '16.37.93.196', '16.37.157.74', '2049', '691', '100']

虽然我运行它时出现错误:

raise nx.NetworkXError('Node %s has no position.' % e)

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

我怎样才能解决这个问题?

我完整的代码:

for x in xrange(5):

G.add_edge('sIP:

'+mostfrequent[x][0], countermfi[x])

G.add_edge('dIP:

'+mostfrequent[x][1], countermfi[x])

G.add_edge('sPort:

'+mostfrequent[x][2], countermfi[x])

G.add_edge('dPort:

'+mostfrequent[x][3], countermfi[x])

G.add_edge('Protocol:

'+mostfrequent[x][4], countermfi[x])

G.add_edge('Packets:

'+mostfrequent[x][5], countermfi[x])

G.add_edge('Bytes:

'+mostfrequent[x][6], countermfi[x])

pos = nx.kamada_kawai_layout(G) # positions for all nodes

#Hyperedges

nx.draw_networkx_nodes(G, pos, nodelist=countermfi, node_size=node_size, node_color='red', node_shape='s', alpha=1)

#Nodes

nx.draw_networkx_nodes(G, pos, nodelist=flattened_list_nodes, node_size=1600, node_color='blue', alpha=0.6)

#Edges

nx.draw_networkx_edges(G, pos, edgelist=G.edges(), width=2)

#Labels

nx.draw_networkx_labels(G, pos, font_size=11, font_family='sans-serif')

plt.axis('off')

plt.show()

先感谢您,

问候 :)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值