python和networkx:如何更改节点的颜色

2024-06-26 14:20:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python和“networkx”随机地为节点指定边。节点分为两个类别,每个类别具有相同数量的节点。代码正在工作,但我有一个问题:如何更改节点的颜色?现在,两个类别的节点都有sam颜色。在

import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
N = int(raw_input("Enter the number of each race to be used: "))

gamma = float(raw_input("Enter the probability of same-race ties: "))

delta = float(raw_input("Enter the probability of cross-race ties: "))
connectr11 = np.zeros((N,N),dtype=np.int32)

for i in range(0,N):
        dval = np.diag((np.random.random_sample(size=(N-i))<gamma).astype(np.int32),i)
        connectr11 += dval
        if (i>0):
                connectr11 += dval.T
##print connectr11

connectr22 = np.zeros((N,N),dtype=np.int32)

for i in range(0,N):
        dval = np.diag((np.random.random_sample(size=(N-i))<gamma).astype(np.int32),i)
        connectr22 += dval
        if (i>0):
                connectr22 += dval.T

##print connectr22

connectr12 = np.zeros((N,N),dtype=np.int32)

for i in range(0,N):
        dval = np.diag((np.random.random_sample(size=(N-i))<delta).astype(np.int32),i)
        connectr12 += dval
        if (i>0):
                connectr12 += dval.T

##print connectr12


connectr21 = np.zeros((N,N),dtype=np.int32)

for i in range(0,N):
        dval = np.diag((np.random.random_sample(size=(N-i))<delta).astype(np.int32),i)
        connectr12 += dval
        if (i>0):
                connectr12 += dval.T
##print connectr21

concr1x=np.concatenate((connectr11, connectr12), axis=0)
concrx2=np.concatenate((connectr21, connectr22), axis=0)
concr12=np.concatenate((concr1x, concrx2), axis=1)
##print concr12


print concr12


A=np.matrix(concr12)
G=nx.from_numpy_matrix(A)


for i in range(0,N):
    if i < N: 
        G.node[i] = 1
        node_color='b'
    else:
        G.node[i] = 0
        node_color='r'



nx.draw_circular(G, node_color=node_color)
plt.show()

Tags: innodeforif节点npzerosrange
1条回答
网友
1楼 · 发布于 2024-06-26 14:20:06

你希望你的节点颜色是一个列表。在从第二行到最后一行中,指定node_color=node_color将使所有节点都成为最后一个指定给node_color的值。您需要的是一个长度与节点数相等的列表。在

    node_colors =[]
    node_colors.append('r')

尝试:

^{pr2}$

相关问题 更多 >