[英]Python Networkx: preserving nodes ID when saving/serializing networks to hardisk
[英]Networkx: networks with many nodes
我有一個數據幀,大約有8,800行,我想用networkx生成一個網絡。 網絡生成數據框的基本結構如下所示:
df = pd.DataFrame({'id_emp':[13524791000109, 12053850000137, 4707821000113],
'name_dep': ['DIONILSO MATEUS MARCON', 'JOSE AUGUSTO ROSA', 'LUCIO ANTONIO MOSQUINI'],
'roi':[12, 15, 18]
})
在我想要表示的網絡中,有兩種類型的節點:'id_emp'和'name_dep',並且在同一行上有每對這些值的邊。 因此,網絡將擁有17,600個節點。 邊緣將具有基於roi柱的權重。 創建網絡的代碼如下:
import networkx as nx
G = nx.Graph()
G.add_nodes_from(df['id_emp'], type_='id_emp')
for node in G.nodes:
G.nodes[node]['fornecedor'] = df[df['id_emp'] == node]['fornecedor'].values[0]
G.add_nodes_from(df['name_dep'], type_='name_dep')
G.add_weighted_edges_from(df[['id_emp', 'name_dep', 'roi']].values)
colors = ['#0000FF' if G.nodes[n]['type_'] == 'id_emp' else '#FF0000' for n in G.nodes]
edge_width = [a[2]['weight'] for a in G.edges(data=True)]
plt.figure(figsize=(7.5,7.5))
nx.draw(G, pos = nx.kamada_kawai_layout(G), node_size = 100,
node_color = colors, with_labels=False, edge_cmap=plt.cm.Blues)
nx.draw_networkx_edges(G,pos=nx.kamada_kawai_layout(G),width=edge_width)
plt.axis('off')
plt.show()
具有原始數據幀的網絡如下所示:
我的問題如下:使用networkx繪制具有此數量節點的網絡是否合適? 如果是,我該如何改進網絡視圖? 如果沒有,我該怎么做才能改善網絡視圖?
我認為這部分是因為你的節點大小太大,這使得整個圖像看起來很混亂。 您可以將其從100更改為更小的值,並查看它是否符合您的需要。
此外,您可以檢查是否有更大的節點布局 。
嘗試使用此代碼進行布局:
[x for x in nx.__dir__() if x.endswith('_layout')]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.