jwb*_*ley 5 python graph networkx python-3.x
如果我使用 NetworkX 和 Matplotlib 多次生成相同的图形,它会在每一代中随机旋转:
在不改变脚本或输入数据的情况下,图形在每次生成时随机旋转。是否可以指定方向?
随着图形变得更加密集(以上只是样本,但最终我将有数千个节点和边),如果由于图形图片旋转而移动新添加的节点或边,将很难看到它们。
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")
Run Code Online (Sandbox Code Playgroud)
第二个不太重要的问题是为什么从 R1 到 R2 和 R1 到 R5 的边/线要长得多?更新:我没有在 JSON 数据源中设置“长度”属性。
我刚刚发现您可以修复随机生成图的初始状态:只需为生成器设置种子,它就会始终生成相同的一组随机位置。
random_pos = nx.random_layout(graph, seed=42)
pos = nx.spring_layout(graph, pos=random_pos)
Run Code Online (Sandbox Code Playgroud)
从文档:
spring_layout(G, dim=2, k=None, pos=None, fixed=None, iterations=50, weight='weight', scale=1.0)
Run Code Online (Sandbox Code Playgroud)
pos : dict 或 None 可选(默认=无)
节点的初始位置作为字典,节点作为键,值作为列表或元组。如果没有,则使用随机初始位置。
因此,如果您不指定节点的初始位置,NetworkX 将随机指定。
| 归档时间: |
|
| 查看次数: |
1886 次 |
| 最近记录: |