Spaces:
Sleeping
Sleeping
| """ | |
| =========== | |
| Print Graph | |
| =========== | |
| Example subclass of the Graph class. | |
| """ | |
| import matplotlib.pyplot as plt | |
| import networkx as nx | |
| from networkx import Graph | |
| class PrintGraph(Graph): | |
| """ | |
| Example subclass of the Graph class. | |
| Prints activity log to file or standard output. | |
| """ | |
| def __init__(self, data=None, name="", file=None, **attr): | |
| super().__init__(data=data, name=name, **attr) | |
| if file is None: | |
| import sys | |
| self.fh = sys.stdout | |
| else: | |
| self.fh = open(file, "w") | |
| def add_node(self, n, attr_dict=None, **attr): | |
| super().add_node(n, attr_dict=attr_dict, **attr) | |
| self.fh.write(f"Add node: {n}\n") | |
| def add_nodes_from(self, nodes, **attr): | |
| for n in nodes: | |
| self.add_node(n, **attr) | |
| def remove_node(self, n): | |
| super().remove_node(n) | |
| self.fh.write(f"Remove node: {n}\n") | |
| def remove_nodes_from(self, nodes): | |
| for n in nodes: | |
| self.remove_node(n) | |
| def add_edge(self, u, v, attr_dict=None, **attr): | |
| super().add_edge(u, v, attr_dict=attr_dict, **attr) | |
| self.fh.write(f"Add edge: {u}-{v}\n") | |
| def add_edges_from(self, ebunch, attr_dict=None, **attr): | |
| for e in ebunch: | |
| u, v = e[0:2] | |
| self.add_edge(u, v, attr_dict=attr_dict, **attr) | |
| def remove_edge(self, u, v): | |
| super().remove_edge(u, v) | |
| self.fh.write(f"Remove edge: {u}-{v}\n") | |
| def remove_edges_from(self, ebunch): | |
| for e in ebunch: | |
| u, v = e[0:2] | |
| self.remove_edge(u, v) | |
| def clear(self): | |
| super().clear() | |
| self.fh.write("Clear graph\n") | |
| G = PrintGraph() | |
| G.add_node("foo") | |
| G.add_nodes_from("bar", weight=8) | |
| G.remove_node("b") | |
| G.remove_nodes_from("ar") | |
| print("Nodes in G: ", G.nodes(data=True)) | |
| G.add_edge(0, 1, weight=10) | |
| print("Edges in G: ", G.edges(data=True)) | |
| G.remove_edge(0, 1) | |
| G.add_edges_from(zip(range(0, 3), range(1, 4)), weight=10) | |
| print("Edges in G: ", G.edges(data=True)) | |
| G.remove_edges_from(zip(range(0, 3), range(1, 4))) | |
| print("Edges in G: ", G.edges(data=True)) | |
| G = PrintGraph() | |
| nx.add_path(G, range(10)) | |
| nx.add_star(G, range(9, 13)) | |
| pos = nx.spring_layout(G, seed=225) # Seed for reproducible layout | |
| nx.draw(G, pos) | |
| plt.show() | |