Las redes de Python cambian el color de los nodos al usar draw_network_nodes ()

El objective es obtener algo similar a

introduzca la descripción de la imagen aquí

Para definir el gráfico que uso:

import matplotlib.pyplot as plt import networkx as nx graph = { '1': ['2', '3', '4'], '2': ['5','11','12','13','14','15'], '3' : ['6','7','66','77'], '5': ['6', '8','66','77'], '4': ['7','66','77'], '7': ['9', '10'] } MG = nx.DiGraph() MG.add_edges_from([(start, stop, {'weigth' : len(graph[start]) }) for start in graph for stop in graph[start]]) 

y el código para trazarlo es:

 plt.figure(figsize=(8,8)) pos=nx.graphviz_layout(MG,prog="twopi",root='1') for n in MG.nodes_iter(): nx.draw_networkx_nodes(MG, pos, nodelist = [n], node_size = 2000 / float(len(MG[n[0]])+1), node_color = (len(MG[n[0]])+1), alpha = 1/float(len(MG[n[0]])+1), with_labels=True ) xmax=1.1*max(xx for xx,yy in pos.values()) ymax=1.1*max(yy for xx,yy in pos.values()) plt.xlim(0,xmax) plt.ylim(0,ymax) plt.show() 

Hay 2 cosas aquí que me gustaría saber:

  • ¿Cómo puedo tener el nodo de color dependiendo de la cantidad de enlaces que tenga cada nodo (es decir, len(MG[0]) )?

  • donde estan mis tags

Gracias

¿Qué tal esto? Puede usar los mapas de colores de matplotlib para asignar valores a colores para los nodos.

 import matplotlib.pyplot as plt import networkx as nx graph = { '1': ['2', '3', '4'], '2': ['5','11','12','13','14','15'], '3' : ['6','7','66','77'], '5': ['6', '8','66','77'], '4': ['7','66','77'], '7': ['9', '10'] } MG = nx.DiGraph(graph) plt.figure(figsize=(8,8)) pos=nx.graphviz_layout(MG,prog="twopi",root='1') nodes = MG.nodes() degree = MG.degree() color = [degree[n] for n in nodes] size = [2000 / (degree[n]+1.0) for n in nodes] nx.draw(MG, pos, nodelist=nodes, node_color=color, node_size=size, with_labels=True, cmap=plt.cm.Blues, arrows=False) plt.show() 

introduzca la descripción de la imagen aquí