显示networkx中每条边的person_r值
时间: 2024-02-17 09:02:52 浏览: 180
在 `networkx` 中,我们可以通过给边(edge)添加属性(attribute)来存储额外的信息,例如 `person_r` 值。下面是一个简单的例子:
```python
import networkx as nx
import matplotlib.pyplot as plt
# 创建一个简单的图
G = nx.Graph()
G.add_edges_from([(1, 2), (1, 3), (2, 3)])
# 添加边的属性
G.edges[(1, 2)]['person_r'] = 0.5
G.edges[(1, 3)]['person_r'] = 0.8
G.edges[(2, 3)]['person_r'] = 0.3
# 绘制图形
nx.draw(G, with_labels=True)
edge_labels = nx.get_edge_attributes(G, 'person_r')
nx.draw_networkx_edge_labels(G, pos=nx.spring_layout(G), edge_labels=edge_labels)
plt.show()
```
我们创建了一个简单的无向图,然后为每条边添加了一个 `person_r` 属性。在绘制图形时,我们调用了 `nx.draw_networkx_edge_labels()` 函数来显示每条边的 `person_r` 值。
如果你有一个较大的图,你可以使用循环来为每条边添加属性,例如:
```python
import networkx as nx
# 创建一个较大的图
G = nx.Graph()
# 添加节点和边
# ...
# 为每条边添加属性
for u, v, d in G.edges(data=True):
# 计算 person_r 值
person_r = calculate_person_r(u, v)
# 添加属性
d['person_r'] = person_r
```
在这个例子中,我们使用了 `data=True` 参数来获取每条边的属性字典(dictionary),然后通过循环为每条边添加了 `person_r` 属性。
阅读全文