当使用networkx的
draw_networkx_edges()
函数时,是否可以根据边的权重更改它们的线条厚度?这里假设权重小于某个已知数k。draw_networkx_edges()
函数时,是否可以根据边的权重更改它们的线条厚度?这里假设权重小于某个已知数k。edges(data = 'weight')
函数:
以元组形式返回边,顺序为(节点,相邻节点,数据)。
也就是说,当指定 data='weight'
时,通过 edge[2]
可以获取边的权值信息(或者调用 data=True
返回所有数据元素的字典,通过 edge[2]['weight']
获取权值信息)。
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:为边缘添加权重
步骤2:根据权重对边缘列表进行分类
步骤3:将边缘列表传递给draw_networkx_edges
我从另一个SO线程中发现了这个方法。
旧的损坏链接:http://networkx.lanl.gov/examples/drawing/weighted_graph.html