簡體   English   中英

如何使用隨機分配的節點標簽創建 Networkx 圖?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM