使用networkx的draw_networkx_edges()
时,是否可以根据重量更改边缘的厚度?
这里我假设权重小于某个已知数字,比如k。
答案 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])
答案 1 :(得分:1)
一种方法是对边缘进行分类,如this example所示。
步骤1:向边缘添加权重
步骤2:根据权重对边缘列表进行分类
第3步:将edgelist传递给draw_networkx_edges
我偶然发现了different SO thread。