【发布时间】:2012-05-21 21:45:38
【问题描述】:
每个人都找不到如何将权重列表的属性名称传递给 networkx 中的 graphviz_layout。像这样的:
nx.spring_layout(G, weight='weight.sum')
但使用nx.graphviz_layout(G, ...)。也许有人会知道?
【问题讨论】:
标签: networking layout graph graphviz networkx
每个人都找不到如何将权重列表的属性名称传递给 networkx 中的 graphviz_layout。像这样的:
nx.spring_layout(G, weight='weight.sum')
但使用nx.graphviz_layout(G, ...)。也许有人会知道?
【问题讨论】:
标签: networking layout graph graphviz networkx
如果我没听错的话,你想指定哪个边缘属性用作 graphviz 布局的边缘权重。从NetworkX docs 我看不出这是可能的。
但是,graphviz 中的布局算法使用weight 属性。它是这样说的:
边缘的重量。在dot中,重量越重,边缘越短、越直、越垂直。对于其他布局,较大的权重会促使布局使边缘长度更接近len 属性指定的长度。
有了这个,您可以set the edge weight 为网络中的每个边缘:
g = nx.Graph()
g.add_edge(1, 2, {'weight': 4})
或
g.add_edge(1, 2)
g.edge[1][2]['weight'] = 4
或
g[1][2]['weight'] = 4
如果您想为边缘设置默认权重,您可以将其作为argument to the graphviz program 传递给您要在graphviz_layout 中使用:
nx.graphviz_layout(g, prog='dot', args='-Eweight=4')
【讨论】: