DavidK
DavidK

Reputation: 2564

NetworkX - How to change the shape of the node?

I know that we can choose the shape from so^>v<dph8.

Is there a way to modify the shape of a node so that it contains the name of the node ?

I'm interested by custom shapes (or that can have a size that adapts to the text it contains).

Upvotes: 15

Views: 33859

Answers (2)

Yury Wallet
Yury Wallet

Reputation: 1660

I can suggest to have a bbox around the label instead of changing shape of the node. In this case node will "contain the name" inside the box and to acheive this you need specify bbox parameters as dictionary

nx.draw(G, pos=pos, with_labels=True,  node_shape="s",  node_color="none", bbox=dict(facecolor="skyblue", edgecolor='black', boxstyle='round,pad=0.2'))

You may also consider this solution here

Upvotes: 21

Kirell
Kirell

Reputation: 9798

You can draw nodes and their labels with the following code:

nx.draw_networkx_nodes(G, pos, node_size=600, node_color='w', alpha=0.4, node_shape='d')
nx.draw_networkx_labels(G, pos, font_size=20, font_family='sans-serif')

For a complete example you can look at the code of the networkx gallery here.

Edit: To fit the name inside the node, you have to play with the node size and font size.

Proof:

example

Upvotes: 8

Related Questions