-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGraph.py
61 lines (47 loc) · 1.76 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import networkx as nx
class Graph():
'''
my own Graph class for MST
'''
def __init__(self):
# we just consider undirected _graph
self._graph = nx.Graph()
#super(Graph).__init__()
@property
def adj(self):
return self._graph.adj
def addEdge(self,src, dest, weight=1):
self._graph.add_edge(src, dest, weight=weight)
#super().add_edge(src,dest,weight=weight)
def removeEdge(self, src, dest):
self._graph.remove_edge(src, dest)
#super().remove_edge(src,dest)
def readEdgeList(self, path, comments='#', delimiter=None, nodetype=None):
self._graph = nx.read_weighted_edgelist(path, comments=comments, \
delimiter=delimiter, create_using=None, nodetype=nodetype, encoding='utf-8')
def clear(self):
self._graph.clear()
#super().clear()
def edges(self):
return self._graph.edges(data=True)
def number_of_nodes(self):
return self._graph.number_of_nodes()
def number_of_edges(self):
return self._graph.number_of_edges()
def neighbors(self, n):
return self._graph.neighbors(n)
# draw the _graph
def show(self):
import matplotlib.pyplot as plt
plt.figure(figsize=(8, 8))
plt.axis('off')
pos=nx.spring_layout(self._graph)
#pos=nx.spring_layout(self)
edge_labels=dict([((u,v,),d['weight'])
for u,v,d in self._graph.edges(data=True)])
#for u,v,d in self.edges(data=True)])
nx.draw_networkx(self._graph,pos)
nx.draw_networkx_edge_labels(self._graph,pos,edge_labels=edge_labels)
#nx.draw_networkx(self,pos)
#nx.draw_networkx_edge_labels(self,pos,edge_labels=edge_labels)
plt.show()