I want to draw a network with colored nodes for each community detected (I already have node lists for each community.)
What I have at the moment is something like this :
plot = nx.draw(G3, nodecolor='r', node_color= 'white', edge_color='k',
with_labels=True, font_weight='light', node_size= 280, width= 0.9)
plt.savefig('graphe.png')
plt.show()
How can I implement it in a way that each community takes a specific color?
You were close. You just have to draw the set of nodes, one community at a time.
Also, since we are drawing it step by step, we have to fix the position of the nodes.
To do that, we use nx.spring_layout()
Here's a working example to help you follow along, with dummy data.
node_lists_community1 = [1,2,3, 4]
node_lists_community2 = [5, 6, 7]
node_lists_community3 = [8,10,11,12, 13]
all_nodes = node_lists_community1+ node_lists_community2+ node_lists_community3
#list of edges
elist = [(1,2), (1,3), (2,4), (2, 5), (5,6), (6,7),
(7,9), (8,10), (8,11), (11,13), (12,13)]
#create the networkx Graph with node types and specifying edge distances
G3 = nx.Graph()
for n in all_nodes:
G3.add_node(n)
for from_loc, to_loc in elist:
G3.add_edge(from_loc, to_loc)
pos = nx.spring_layout(G3) #calculate position for each node
# pos is needed because we are going to draw a few nodes at a time,
# pos fixes their positions.
# Notice that the pos dict is passed to each call to draw below
# Draw the graph, but don't color the nodes
nx.draw(G3, pos, edge_color='k', with_labels=True,
font_weight='light', node_size= 280, width= 0.9)
#For each community list, draw the nodes, giving it a specific color.
nx.draw_networkx_nodes(G3, pos, nodelist=node_lists_community1, node_color='b')
nx.draw_networkx_nodes(G3, pos, nodelist=node_lists_community2, node_color='r')
nx.draw_networkx_nodes(G3, pos, nodelist=node_lists_community3, node_color='g')
plt.savefig('graphe.png')
plt.show()
Please ask if something is not clear.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With