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:
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()
Comments
Post a Comment