根据重量改变边缘厚度[networkx]

时间:2014-08-04 21:39:15

标签: python matplotlib networkx

使用networkx的draw_networkx_edges()时,是否可以根据重量更改边缘的厚度?

这里我假设权重小于某个已知数字,比如k。

2 个答案:

答案 0 :(得分:2)

您可以使用edges(data='weight')

边缘以元组形式返回,并带有可选数据(节点,邻居,数据)。

也就是说,您可以在指定edge[2]时通过data='weight'获取边缘的数据(如果调用edge[2]['weight']以获取所有数据元素作为dict,则可以通过data=True来获取边缘数据。 / p>

这是一个例子:

import networkx as nx
g = nx.Graph()
g.add_edge('A', 'B', weight=5)
g.add_edge('A', 'C', weight=15)
g.add_edge('B', 'C', weight=7)

pos = nx.spring_layout(g, seed=0)
nx.draw_networkx(g, pos)

for edge in g.edges(data='weight'):
    nx.draw_networkx_edges(g, pos, edgelist=[edge], width=edge[2])

graph drawing

答案 1 :(得分:1)

一种方法是对边缘进行分类,如this example所示。

步骤1:向边缘添加权重
步骤2:根据权重对边缘列表进行分类
第3步:将edgelist传递给draw_networkx_edges

我偶然发现了different SO thread