def print_graph(self, special_nodes): G = nx.Graph() self.get_graph(self.root, G) poss = hierarchy_pos(G, self.root.val[1]) nx.draw_networkx(G, pos=poss, default=True, node_color='y') plt.show()
def print_graph(self, pts, leaves, v_div, special_nodes=None): G = nx.Graph() self.get_graph(self.root, G) poss = hierarchy_pos(G, self.root.val[0], dim=1) from pylab import rcParams rcParams['figure.figsize'] = 20, 10 if special_nodes: nx.draw_networkx_nodes(G, pos=poss, nodelist=special_nodes, node_color='b', node_size=900) nx.draw_networkx(G, pos=poss, default=True, node_color='y', with_labels=False) if v_div.is_leaf(): nx.draw_networkx_nodes(G, poss, nodelist=[v_div.val], size=500, color='r2') else: nx.draw_networkx_nodes(G, poss, nodelist=[v_div.val[0]], size=500, color='r2') internal = [] for x in pts: if x in leaves: a, b = poss[x] plt.text(a, b - 0.08, s=str(x[0]) + ', ' + str(x[1]), bbox=dict(facecolor='red', alpha=0.5), horizontalalignment='center') else: internal.append(x) labs = {} for k, v in poss.items(): if type(k) == int: labs[k] = poss[k] else: labs[k] = (200, 200) nx.draw_networkx_labels(G, pos=labs) plt.show()
def plot_firewall_rule_tree(self, file_name='img/firewall_rule_tree.png'): plt.figure(figsize=(16, 16)) tree = self.tree pos = hierarchy_pos(tree) nx.draw(tree, pos, with_labels=True) nx.draw_networkx_edge_labels(tree, pos, rotate=False, edge_labels=nx.get_edge_attributes( tree, 'range')) plt.savefig(file_name)
def print_graph(self, pts, leaves, v_div, special_nodes=None): G = nx.Graph() self.get_graph(self.root, G) poss = hierarchy_pos(G, self.root.val[0], dim=1) from pylab import rcParams rcParams['figure.figsize'] = 20, 10 if special_nodes: nx.draw_networkx_nodes(G, pos=poss, nodelist=special_nodes, node_color='b',node_size=900) nx.draw_networkx(G, pos=poss, default=True, node_color='y', with_labels=False) if v_div.is_leaf(): nx.draw_networkx_nodes(G, poss, nodelist=[v_div.val], size = 500, color='r2') else: nx.draw_networkx_nodes(G, poss, nodelist=[v_div.val[0]], size = 500, color='r2') internal = [] for x in pts: if x in leaves: a, b = poss[x] plt.text(a,b-0.08,s=str(x[0]) + ', ' + str(x[1]), bbox=dict(facecolor='red', alpha=0.5),horizontalalignment='center') else: internal.append(x) labs = {} for k, v in poss.items(): if type(k) == int: labs[k] = poss[k] else: labs[k] = (200,200) nx.draw_networkx_labels(G, pos=labs) plt.show()