【发布时间】:2020-08-19 10:46:02
【问题描述】:
我有一个大型数据集,它将产品与相关性度量进行比较,如下所示:
product1 product2 relatedness
0101 0102 0.047619
0101 0103 0.023810
0101 0104 0.095238
0101 0105 0.214286
0101 0106 0.047619
... ... ...
我使用以下代码将数据输入 NetworkX 绘图工具并生成 MST 图:
import networkx as nx
import matplotlib.pyplot as plt
products = (data['product1'])
products = list(dict.fromkeys(products))
products = sorted(products)
G = nx.Graph()
G.add_nodes_from(products)
print(G.number_of_nodes())
print(G.nodes())
row = 0
for c in data['product1']:
p = data['product2'][row]
w = data['relatedness'][row]
if w > 0:
G.add_edge(c,p, weight=w, with_labels=True)
row = row + 1
nx.draw(nx.minimum_spanning_tree(G), with_labels=True)
plt.show()
生成的图表如下所示:https://i.imgur.com/pBbcPGc.jpg
但是,当我重新运行代码时,使用相同的数据且未进行任何修改,簇的排列似乎发生了变化,因此看起来有所不同,这里的示例:https://i.imgur.com/4phvFGz.jpg,这里的第二个示例:https://i.imgur.com/f2YepVx.jpg .簇、边和权重似乎没有变化,但它们在图空间上的排列每次都在变化。
是什么导致节点的排列每次都发生变化,而代码或数据没有任何变化?我如何重新编写此代码以生成每次对相同数据具有大致相同的节点和边排列的网络图?
【问题讨论】:
标签: python graph networkx minimum-spanning-tree