2012-11-29 9 views
6

NetworkX include functions per disegnare un grafico utilizzando matplotlib. Questo è un esempio utilizzando la grande Notebook IPython (iniziato con ipython3 notebook --pylab inline):Come modificare gli attributi di un disegno grafico networkx/matplotlib?

enter image description here

Nizza, tanto per cominciare. Ma come posso influenzare gli attributi del disegno, come la colorazione, la larghezza della linea e l'etichettatura? Non ho mai lavorato con matplotlib prima.

+0

http: // networkx.lanl.gov/reference/drawing.html - vuoi le funzioni 'draw_networkx_edges' e' draw_networkx_nodes' – job

risposta

11

IPython è un ottimo strumento per scoprire quali funzioni (e oggetti) possono fare. Se si digita

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

vedete

Definizione: nx.draw (G, pos = Nessuno, ax = Nessuno, tenere = Nessuno, ** kwds)

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

E se quindi si digita

[10]: nx.draw_networkx? 

si vedi

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) 

Così, armati di queste informazioni, e un po 'di sperimentazione, non è difficile arrivare 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() 

che produce

enter image description here

+1

Grazie. Dovrò sperimentare con quello. Sono particolarmente interessato a mappare i pesi dei bordi alle larghezze delle linee. – clstaudt

+3

Per avere una larghezza di riga variabile, penso che avresti bisogno di chiamare 'nx.draw_networkx_edges' una volta per ogni larghezza. Vedi [qui] (http://networkx.lanl.gov/examples/drawing/weighted_graph.html) per un esempio. Lì cambiano lo stile della linea, ma mostra dove puoi anche cambiare la larghezza. – unutbu

+0

Grande, che non hai solo risposto alla domanda ma hai spiegato come ottenere la risposta. – Lukas