networkx add_node with specific position

NBaz picture NBaz · Aug 4, 2012 · Viewed 47.2k times · Source

I am still a beginner with networkx I want to add multiple types of nodes in different position, I used the following code

pos = {0: (40, 20), 1: (20, 30), 2: (40, 30), 3: (30, 10)} 
X=nx.Graph()
nx.draw_networkx_nodes(X,pos,node_size=3000,nodelist=[0,1,2,3],node_color='r')

but when I want to access the Graph X , if I type X.node it returns an empty list and if I want to add more nodes I have to set their positions in the beginning using pos dictionary.

How can I add nodes to a graph in a specific location x and y using add_node()

Answer

Aric picture Aric · Aug 4, 2012

You can use the following approach to set individual node positions and then extract the "pos" dictionary to use when drawing.

In [1]: import networkx as nx

In [2]: G=nx.Graph()

In [3]: G.add_node(1,pos=(1,1))

In [4]: G.add_node(2,pos=(2,2))

In [5]: G.add_edge(1,2)

In [6]: pos=nx.get_node_attributes(G,'pos')

In [7]: pos
Out[7]: {1: (1, 1), 2: (2, 2)}

In [8]: nx.draw(G,pos)

UPDATE

Add drawing

enter image description here