對于以下代碼:
import networkx as nx
import matplotlib.pyplot as plt
G = nx.DiGraph()
#Set 1
G.add_edges_from([('A','B'),('A','C'),('C','B')])
#Set 2
G.add_edges_from([('D','A'),('D','B'),('D','C')])
#Set 3
G.add_edges_from([('E','D'),('E','B'),('E','C')])
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G,pos, node_size=500, node_color = 'green')
nx.draw_networkx_edges(G,pos, edgelist = G.edges())
plt.show()
我想為邊緣添加權重。據我了解,所有邊的權重僅為 1。我想修改圖中每條邊的權重。
從以下檔案中,我看到您可以通過添加來更改單個節點的權重: https ://networkx.org/documentation/stable/reference/generated/networkx.linalg.attrmatrix.attr_sparse_matrix.html
我想為每個邊緣添加不同的權重。例如,('A','B') 是 0.1 權重,('A','C') 是 0.2 權重,等等。
我還查看了以下帖子: NetworkX:如何向現有 G.edges() 添加權重?
但是,看起來他們正在遍歷每個邊緣以獲得所有邊緣的特定權重,這不是我想要的,而是我想要特定邊緣的特定權重。
uj5u.com熱心網友回復:
添加邊時,可以指定包含任意邊屬性的字典:
from networkx import DiGraph
G = DiGraph()
G.add_edges_from([('A','B', {'weight': 0.1}),('A','C', {'weight': 0.2})])
print(G.edges(data=True))
# [('A', 'B', {'weight': 0.1}), ('A', 'C', {'weight': 0.2})]
或者,可以指定一個三元組,其中前兩個元素是源/目標,第三個元素是權重,然后使用以下.add_weighted_edges_from方法:
from networkx import DiGraph
G = DiGraph()
G.add_weighted_edges_from([('A','B', 0.1),('A','C', 0.2)])
print(G.edges(data=True))
# [('A', 'B', {'weight': 0.1}), ('A', 'C', {'weight': 0.2})]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/523846.html
