-
Notifications
You must be signed in to change notification settings - Fork 1
/
Graph.py
38 lines (31 loc) · 1 KB
/
Graph.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import matplotlib.pyplot as plt
class Graph(object):
'''
初始化图需要的参数类型以及形式:
nodes: dict
{0: [x0,y0], 1: [x1,y1], ...]
edges: list
[[index1, index2], [index3, index4], ...]
'''
def __init__(self, nodes, edges):
self.nodes = nodes
self.edges = edges
# 构建邻接表
self.adj_list = [[] for _ in range(len(nodes))]
for edge in edges:
self.adj_list[edge[0]].append(edge[1])
self.adj_list[edge[1]].append(edge[0])
# 画出图
def draw(self, title=''):
for edge in self.edges:
x = []
x.append(self.nodes[edge[0]][0])
x.append(self.nodes[edge[1]][0])
y = []
y.append(self.nodes[edge[0]][1])
y.append(self.nodes[edge[1]][1])
plt.plot(x, y, 'y-')
for node in self.nodes:
plt.plot(self.nodes[node][0], self.nodes[node][1], 'r.')
plt.title(title)
plt.show()