Python NetworkX - 为什么图形总是随机旋转?

标签 python python-3.x graph networkx

如果我使用 NetworkX 和 Matplotlib 多次生成相同的图形,它会在每一代中随机旋转:

运行 1:
Run 1

运行 2:
enter image description here

在不改变脚本或输入数据的情况下,图形在每次生成时随机旋转。是否可以指定方向?

随着图形变得更加密集(以上只是样本,但最终我将有数千个节点和边),如果由于图形图片旋转而移动新添加的节点或边,将很难看到它们。

import networkx as nx
import matplotlib.pyplot as plt
from networkx.readwrite import json_graph
#
# The graph data is loaded from JSON
#
graph = json_graph.node_link_graph(input_json)
    pos = nx.spring_layout(graph)
    nx.draw(graph, pos, with_labels=True, node_size=300)
    edge_labels=dict([((u,v,),d['weight']) for u,v,d in graph.edges(data=True)])
    nx.draw_networkx_edge_labels(graph, pos, edge_labels=edge_labels)
    plt.savefig("test.png")

第二个不太重要的问题是为什么从 R1 到 R2 和 R1 到 R5 的边/线要长得多?更新:我没有在 JSON 数据源中设置“长度”属性。

最佳答案

我刚刚发现您可以修复随机生成图的初始状态:
只需播种生成器,它就会始终产生相同的随机位置集。

random_pos = nx.random_layout(graph, seed=42)
pos = nx.spring_layout(graph, pos=random_pos)

关于Python NetworkX - 为什么图形总是随机旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52444409/

相关文章:

python - QGis:找到一个点所在的多边形

python - 根据条件比较列表列表中的所有列表,并按差异将它们分组在一起

algorithm - 有多少个 BFS 排序?

javascript - mxGraph:移动边的句柄点时会触发哪个事件?

python - 自定义 Python 列表排序

python - 使用 pandas 追加、连接、连接或合并两个数据框

python-3.x - 我可以在 ubuntu 18.04 中安装 python 3.7 而系统中没有 python 3.6 吗?

graph - Graphviz 中的隐藏边

python - 如何使用 Python 运行 Chrome 浏览器版本?

python - 有没有办法堆叠两个 tensorflow 数据集?