How to show node name in graphs using networkx?

macabeus picture macabeus · Oct 1, 2015 · Viewed 14.4k times · Source

I have the code

import networkx as nx
import matplotlib.pyplot as plt

G = nx.DiGraph()

G.add_nodes_from([1, 2, 3, 4])
G.add_edges_from([(1, 2), (2, 1), (2, 3)])

nx.draw(G)
plt.savefig("graph.png")
plt.show()

And it draws the following graph: enter image description here

However, I need to display labels. How do I display the numeric values and words (one, two, three and four) within the nodes of the graph?

Answer

ryanmc picture ryanmc · Oct 1, 2015

You just need to call the with_labels=True parameter with nx.Draw():

import networkx as nx
import matplotlib.pyplot as plt

G = nx.DiGraph()

G.add_nodes_from([1, 2, 3, 4])
G.add_edges_from([(1, 2), (2, 1), (2, 3)])

nx.draw(G,with_labels=True)
plt.savefig("graph.png")
plt.show()

You can also call font_size, font_color, etc.

See the documentation here: https://networkx.github.io/documentation/latest/reference/drawing.html