Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Networkx-使用节点列表绘制节点时出现问题_Python_Nodes_Draw_Networkx_Nodelist - Fatal编程技术网

Python Networkx-使用节点列表绘制节点时出现问题

Python Networkx-使用节点列表绘制节点时出现问题,python,nodes,draw,networkx,nodelist,Python,Nodes,Draw,Networkx,Nodelist,我有一个嵌套的元组,如下所示: 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', '1

我有一个嵌套的元组,如下所示:

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'))
我想用networkx通过nodelist声明来绘制每个子元组的每个元素:

nx.draw_networkx_nodes(G, pos, nodelist=flattened_list_nodes, node_size=1600, node_color='blue', alpha=0.6)
为此,我将元组A展平为一个列表(每个元素只出现一次):

虽然我运行它时,会出现以下错误:

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:\n'+mostfrequent[x][0], countermfi[x])
    G.add_edge('dIP:\n'+mostfrequent[x][1], countermfi[x])
    G.add_edge('sPort:\n'+mostfrequent[x][2], countermfi[x])
    G.add_edge('dPort:\n'+mostfrequent[x][3], countermfi[x])
    G.add_edge('Protocol:\n'+mostfrequent[x][4], countermfi[x])
    G.add_edge('Packets:\n'+mostfrequent[x][5], countermfi[x])
    G.add_edge('Bytes:\n'+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()
提前谢谢大家,, 问候语:)

IIUC:

首先创建图,G:

G = nx.Graph()

G.add_nodes_from(flattened_list_nodes)

pos = nx.kamada_kawai_layout(G)

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


您是如何定义pos的?它需要是一个dict,并且需要为所有节点分配一个位置。networkx有一些命令可以为您创建
pos
。我对pos的定义如下:
pos=nx.kamada\u kawai\u layout(G)
。如果我使用
nx.draw\u networkx\u节点(G,pos,node\u size=3000,node\u color='deepskyblue',alpha=1)
来绘制节点,它可以工作,但我想绘制两种不同样式的节点,其中两个数组作为节点列表。将另一个数组设置为nodelist非常奇怪。您可以编辑您的问题以提供更多代码吗?您描述的内容向我表明错误在其他地方。基本上,错误消息是说
pos
没有
'16.37.97.17'
的值。好的,更新了我的问题以提供更多代码。希望这有助于找到解决方案。还可以用字典定义我自己的40个节点的“位置”吗?如果是,我如何知道哪个节点有哪个编号来定义它们的位置?这在技术上是可行的,但当分别添加节点时,我的整个图形都被弄乱了。我对x范围(5)中的x使用
:G.add_边(mostfrequent[x][0],countermfi[x])G.add_边(mostfrequent[x][1],countermfi[x])
G = nx.Graph()

G.add_nodes_from(flattened_list_nodes)

pos = nx.kamada_kawai_layout(G)

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