假设我有一个networkx图表:
g=nx.gnm_random_graph(5,5)
for u,v,w in g.edges(data=True):
w = np.random.randint(0,10)
我想把它表示为每个边都有一个固定的长度(它的权重值)。我所看到的网络本质上是放射状的——我事先知道这是可能的(我没有unutbu的评论here)中提出的限制。在
我想随机计算节点的坐标(有固定的边长度约束)并绘制它们。然后我想把所有没有边连接的节点之间的距离制成表格。在
从我目前所读到的内容来看,networkx绘制节点时不考虑边的长度。但节点位置可以明确定义。所以我需要写一个函数来计算节点的位置。在
有没有人知道networkx或其他可能有助于此的功能?在
更一般地说,networkx是否适合此任务?在
我无意中发现了这一点,尽管它相当古老,我还是会尽力给出一个答案:
首先,我尝试了你的代码,但它似乎不起作用。在
给了我
^{pr2}$所以权重都保持为“1”。这是合乎逻辑的,因为您只改变'w'而不是边的参数'weight'。您可以使用以下方法来实现:
这给了你
节点的放置是通过传递每个节点的x和y坐标来完成的。这样的听写可以通过使用networkx放置算法来获得,这可以在这里networkx.drawing.layout。使用networkx.circular_布局作为基础,可以使用numpy从中心向外构建图形坐标。这当然需要一些简单的三角函数,并且只有在系统没有过度确定的情况下才有效。在
相关问题 更多 >
编程相关推荐