How to set colors for nodes in NetworkX?

Question:

I created my graph, everything looks great so far, but I want to update color of my nodes after creation.

My goal is to visualize DFS, I will first show the initial graph and then color nodes step by step as DFS solves the problem.

If anyone is interested, sample code is available on Github

Asked By: Gokhan Arik

||

Answers:

All you need is to specify a color map which maps a color to each node and send it to nx.draw function. To clarify, for a 20 node I want to color the first 10 in blue and the rest in green. The code will be as follows:

G = nx.erdos_renyi_graph(20, 0.1)
color_map = []
for node in G:
    if node < 10:
        color_map.append('blue')
    else: 
        color_map.append('green')      
nx.draw(G, node_color=color_map, with_labels=True)
plt.show()

You will find the graph in the attached imageenter image description here.

Answered By: Abdallah Sobehy

Refer to node_color parameter:

nx.draw_networkx_nodes(G, pos, node_size=200, node_color='#00b4d9')
Answered By: Montenegrodr

has been answered before, but u can do this as well:

# define color map. user_node = red, book_nodes = green
color_map = ['red' if node == user_id else 'green' for node in G]        
graph = nx.draw_networkx(G,pos, node_color=color_map) # node lables
Answered By: Qasim Wani

In my case, I had 2 groups of nodes (from sklearn.model_selection import train_test_split). I wanted to change the color of each group (default color are awful!). It took me while to figure it out how to change it but, Tensor is numpy based and Matplotlib is the core of networkx library. Therefore …

test=data.y
test=test.numpy()
test=test.astype(np.str_)
test[test == '0'] = '#C6442A'
test[test == '1'] = '#9E2AC6'

nx.draw(G, with_labels=True, node_color=test, node_size=400, font_color='whitesmoke')

Long story short: convert the Tensor in numpy array with string type, check your best Hex color codes for HTML (https://htmlcolorcodes.com/) and you are ready to go!

Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.