¿Cómo cambiar los atributos de un dibujo de networkx / matplotlib graph?

NetworkX incluye funciones para dibujar un gráfico usando matplotlib . Este es un ejemplo del uso del excelente portátil IPython (iniciado con ipython3 notebook --pylab inline ):

introduzca la descripción de la imagen aquí

Bien, para empezar. Pero, ¿cómo puedo influir en los atributos del dibujo, como colorear, ancho de línea y etiquetado? No he trabajado con matplotlib antes.

IPython es una gran herramienta para descubrir qué pueden hacer las funciones (y los objetos). Si escribes

 [1]: import networkx as nx [2]: nx.draw? 

Lo ves

Definición: nx.draw (G, pos = Ninguna, ax = Ninguna, mantener = Ninguna, ** kwds)

 **kwds: optional keywords See networkx.draw_networkx() for a description of optional keywords. 

Y si por lo tanto escribes

 [10]: nx.draw_networkx? 

ya verás

 node_color: color string, or array of floats edge_color: color string, or array of floats width: float Line width of edges (default =1.0) labels: dictionary Node labels in a dictionary keyed by node of text labels (default=None) 

Entonces, armados con esta información y un poco de experimentación, no es difícil llegar a:

 import matplotlib.pyplot as plt import numpy as np import networkx as nx import string G = nx.generators.erdos_renyi_graph(18, 0.2) nx.draw(G, node_color = np.linspace(0,1,len(G.nodes())), edge_color = np.linspace(0,1,len(G.edges())), width = 3.0, labels = {n:l for n,l in zip(G.nodes(),string.ascii_uppercase)} ) plt.show() 

cuyos rendimientos

introduzca la descripción de la imagen aquí