pygraphviz_layout(G, prog='neato', root=None, args='')
If you use complex node objects, they may have the same string representation and GraphViz could treat them as the same node. The layout may assign both nodes a single location. See Issue #1568 If this occurs in your case, consider relabeling the nodes just for the layout computation using something similar to:
>>> H = nx.convert_node_labels_to_integers(G, label_attribute="node_label") >>> H_layout = nx.nx_agraph.pygraphviz_layout(G, prog="dot") >>> G_layout = {H.nodes[n]["node_label"]: p for n, p in H_layout.items()}
A graph created with NetworkX
Name of Graphviz layout program
Root node for twopi layout
Extra arguments to Graphviz layout program
Dictionary of x, y, positions keyed by node.
Create node positions for G using Graphviz.
>>> G = nx.petersen_graph()See :
... pos = nx.nx_agraph.graphviz_layout(G)
... pos = nx.nx_agraph.graphviz_layout(G, prog="dot")
Hover to see nodes names; edges to Self not shown, Caped at 50 nodes.
Using a canvas is more power efficient and can get hundred of nodes ; but does not allow hyperlinks; , arrows or text (beyond on hover)
SVG is more flexible but power hungry; and does not scale well to 50 + nodes.
All aboves nodes referred to, (or are referred from) current nodes; Edges from Self to other have been omitted (or all nodes would be connected to the central node "self" which is not useful). Nodes are colored by the library they belong to, and scaled with the number of references pointing them