[英]How to create Networkx graph with randomly assigned node labels?
我有一個帶有 2 個值的單個標簽變量的圖。 圖中的每個節點都標記為“紅色”或“藍色”。 我想生成 100 個新圖,其中結構(即節點和邊緣位置)保持不變,但節點標簽是隨機分配的,因此每個圖中的“紅色”和“藍色”節點數量相同。 我知道術語“隨機”在這里不合適,但我不知道如何描述它。
對於此處的“隨機”標簽,您只需要每次隨機分配要添加到圖中的標簽,如下所示:
import random
import networkx as nx
G=nx.Graph()
for x in range(6):
G.add_node(x)
for x in range(6):
for y in range(6):
G.add_edge(x,y)
pos=nx.spring_layout(G)
nx.draw_networkx_nodes(G,pos,
nodelist=[x for x in range(6)],
node_color='r',
node_size=500,
alpha=0.8)
nx.draw_networkx_edges(G,pos,
edgelist=[(x,y) for x in range(6) for y in range(6)],
width=4,alpha=0.5,edge_color='b')
labels={}
# Iterate through all nodes
for x in range(len(G.nodes())):
# Label node as either B or R until half of the nodes are labeled as either
if(list(labels.values()).count('R') == len(G.nodes())/2):
labels[x] = 'B'
if(list(labels.values()).count('B') == len(G.nodes())/2):
labels[x] = 'R'
else:
labels[x] = random.choice(['B', 'R'])
nx.draw_networkx_labels(G,pos,labels,font_size=16)
在代碼中,假設 Graph 具有偶數個節點,因此可以存在“相同數量的“紅色”('R')和“藍色”('B')節點。
對於標記,循環遍歷所有節點,然后在紅色或藍色之間隨機選擇,直到一半的節點被分配給紅色或藍色。 然后它只是將其他顏色分配給所有其他顏色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.