代码之家  ›  专栏  ›  技术社区  ›  NicolaiF

获取networkx draw\u网络对象的x、y位置

  •  0
  • NicolaiF  · 技术社区  · 6 年前

    我需要为潜在空间模型生成合成网络样本,而不是手动生成,我想我可以使用networkX绘图工具为我生成样本。

    import networkx as nx
    a = nx.barabasi_albert_graph(10,2)
    nx.draw_networkx(a,with_labels=True,node_size=300)
    

    enter image description here

    在numpy数组中返回的节点的位置正是我要寻找的,有什么简单的方法可以实现这一点吗?

    e、 g[(-0.24,-0.22),(-0.15,0.1),…,)]对于点1,2,。。。,n

    1 回复  |  直到 6 年前
        1
  •  2
  •   Joel    6 年前

    默认图形使用以下公式计算的位置: spring_layout 。您应该知道 spring\u布局 使用随机种子选择节点的初始位置。所以每次的输出都是随机的。

    处理这一问题的最佳方法是通过调用 nx.spring_layout 然后在可选的 pos 绘图命令的关键字参数(当您不想一次绘制所有图形,并且不想在将来的图形中处理节点位置的更改时,这也会有所帮助)。

    import networkx as nx
    a = nx.barabasi_albert_graph(10,2)
    pos = nx.spring_layout(a)
    nx.draw_networkx(a, pos = pos, with_labels=True,node_size=300)