Skip to content

Instantly share code, notes, and snippets.

@KenoLeon
Last active June 4, 2022 21:04
Show Gist options
  • Save KenoLeon/f43b6d04df0e508a6de62e2fa4f615a0 to your computer and use it in GitHub Desktop.
Save KenoLeon/f43b6d04df0e508a6de62e2fa4f615a0 to your computer and use it in GitHub Desktop.
Two town graph with weight data & random node position
import networkx as nx
import matplotlib.pyplot as plt
# Simple Two Town graph in networkx with weight data and random graph
# Init A Graph in networkx
G = nx.Graph()
# Townspeople and towns
KimberleyTown = ['Alice', 'Bob', 'Cathy', 'Dan',
'Ed', 'Fred', 'Gail', 'Hal', 'Ike', 'John']
WordenTown = ['Kim', 'Liz', 'Mike', 'Ned', 'Olivia',
'Pete', 'Quinn', 'Ralph', 'Sally', 'Ted', 'Uma']
Towns = ['KimberleyTown', 'WordenTown']
# Add nodes to graph from twoTowns
G.add_node(Towns[0])
G.add_node(Towns[1])
# The road connecting two towns
G.add_edge(Towns[0], Towns[1], weight=2)
G.add_edge(Towns[0], KimberleyTown[0], weight=1)
G.add_edge(Towns[0], KimberleyTown[1], weight=1)
G.add_edge(KimberleyTown[0], KimberleyTown[2], weight=1)
G.add_edge(KimberleyTown[1], KimberleyTown[3], weight=1)
G.add_edge(KimberleyTown[2], KimberleyTown[4], weight=1)
G.add_edge(KimberleyTown[2], KimberleyTown[5], weight=1)
G.add_edge(KimberleyTown[3], KimberleyTown[6], weight=1)
G.add_edge(KimberleyTown[3], KimberleyTown[7], weight=1)
G.add_edge(KimberleyTown[7], KimberleyTown[8], weight=1)
G.add_edge(KimberleyTown[6], KimberleyTown[9], weight=1)
G.add_edge(Towns[1], WordenTown[0], weight=1)
G.add_edge(Towns[1], WordenTown[1], weight=1)
G.add_edge(WordenTown[0], WordenTown[2], weight=1)
G.add_edge(WordenTown[1], WordenTown[3], weight=1)
G.add_edge(WordenTown[2], WordenTown[4], weight=1)
G.add_edge(WordenTown[2], WordenTown[5], weight=1)
G.add_edge(WordenTown[3], WordenTown[6], weight=1)
G.add_edge(WordenTown[3], WordenTown[7], weight=1)
G.add_edge(WordenTown[4], WordenTown[8], weight=1)
G.add_edge(WordenTown[5], WordenTown[9], weight=1)
G.add_edge(WordenTown[5], WordenTown[10], weight=1)
# Plot graph
fig = plt.figure(0)
fig.canvas.set_window_title('2 Towns')
# Set position of nodes, also used for labels
# !! Notice the seed argument for reproducibility !!
pos = nx.spring_layout(G, seed=123)
nx.draw(G, with_labels=True, node_size=200, node_color='#A0CBE2',
# horizontalalignment='left', verticalalignment='top',
font_size=10, font_color='#000000', font_weight='bold',
font_family='sans-serif', pos=pos)
labels = nx.get_edge_attributes(G, 'weight')
# draw edge data
nx.draw_networkx_edge_labels(G, pos=pos, edge_labels=labels)
plt.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment