python - in NetworkX draw the graph dividing the plot area in 3 -


i have graph in networkx different info inside. graph nodes this:

g = nx.digraph() g.add_node(shape1, level=1) g.add_node(shape2, level=2) g.add_node(shape3, level=2) g.add_node(shape4, level=3) ... 

i want draw graph in order have shapes @ level 1 @ top of plot, shapes in level 3 positioned in lower part of plot , shapes @ level 2 in middle. there maximum 3 levels.

i have been reading documentations networkx, till used random positioning of nodes:

pos = nx.spring_layout(g) nx.draw(g, pos).

do know smarter way position nodes of graph want?

p.s.: desired output this: enter image description here

i don't need draw lines dividing levels, put them make clear need.

the layout "dot" provided interface graphviz seems looking for. while works simple graph you've provided, may need tweak output larger more complicated graphs.

import networkx nx  g = nx.digraph() g.add_node(1,level=1) g.add_node(2,level=2) g.add_node(3,level=2) g.add_node(4,level=3)  g.add_edge(1,2) g.add_edge(1,3) g.add_edge(2,4)  import pylab plt nx.draw_graphviz(g, node_size=1600, cmap=plt.cm.blues,                  node_color=range(len(g)),                  prog='dot') plt.show() 

enter image description here


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -