【问题标题】:Spring graph layout with some predefined positions in networkx在networkx中具有一些预定义位置的Spring图形布局
【发布时间】:2015-10-13 08:06:40
【问题描述】:

我正在使用 networkx 包和 python3 来布局一个简单的图形。如果我只是简单地使用弹簧布局,那么结果就没有想象中那么好(如果是手工布局的话)。所以我的想法是固定一些节点的位置。目前我使用以下代码:

%matplotlib inline

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
import networkx as nx


G = nx.DiGraph()
G.add_path(['H0', 'S0', 'S1', 'S5', 'S6', 'S7', 'H3'], color='green')
G.add_path(['H5', 'S4', 'S3', 'S2', 'S1', 'S0', 'H1'], color='red')
G.add_path(['H2', 'S7', 'S6', 'S8', 'S3', 'S4', 'H4'], color='blue')

#explicitly set some positions to make the drawing nice
fixed_pos = {'S1':(-1,0),'S5':(0,0), 'S6':(1,0), 'S3':(0,1)}
fixed_nodes = fixed_pos.keys()
pos = nx.spring_layout(G, pos=fixed_pos, fixed = fixed_nodes, scale=3)

nx.draw_networkx(G,pos, font_size=10, font_family='sans-serif')
plt.show()

我得到的结果是这样的:

所以所有具有固定位置的节点都挤在 0.5,0.5 附近!谁能告诉我为什么会这样?

【问题讨论】:

    标签: python python-3.x graph networkx


    【解决方案1】:

    您的某个安装可能有些奇怪,或者您正在运行的代码有些不同。

    完全复制并粘贴您的代码(python2.7)后,我得到:

    所以节点就是你指定的地方。

    【讨论】:

    • 如果我使用 networkx 1.9(Debian 中可用的最新版本),我会遇到我在问题中描述的错误。使用 1.10 版它可以工作。谢谢你的回答,对我有帮助!
    • 奇怪 - 我在 1.9.1 中不知道这个问题。很高兴它有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多