#! /usr/bin/env python3 # def digraph_plot ( ): #*****************************************************************************80 # ## digraph_plot() plots digraphs. # # Discussion: # # To use this example, you need to have installed graphviz and pydotplus. # # Licensing: # # This code is distributed under the GNU LGPL license. # # Modified: # # 10 April 2022 # # Author: # # John Burkardt # from abc_incidence import abc_incidence from abcd_incidence import abcd_incidence from five_incidence import five_incidence from graphviz import Digraph from moler_incidence import moler_incidence from sauer_incidence import sauer_incidence import matplotlib.pyplot as plt import numpy as np dot = Digraph ( comment = 'abc', format = 'png' ) A = abc_incidence ( ) n = A.shape[0] c = np.array ( [ '0', '1', '2' ] ) dot.node ( '0', 'Apton' ) dot.node ( '1', 'Benton' ) dot.node ( '2', 'Clinton' ) for i in range ( 0, n ): for j in range ( 0, n ): if ( A[i,j] == 1 ): dot.edge ( c[i], c[j], '' ) dot.render ( 'abc.dot', view = False ) filename = 'abc.dot.png' print ( ' Graphics saved as "' + filename + '"' ) plt.close ( ) dot = Digraph ( comment = 'abcd', format = 'png' ) A = abcd_incidence ( ) n = A.shape[0] c = np.array ( [ '0', '1', '2', '3' ] ) dot.node ( '0', 'Apton' ) dot.node ( '1', 'Benton' ) dot.node ( '2', 'Clinton' ) dot.node ( '3', 'Dayton' ) for i in range ( 0, n ): for j in range ( 0, n ): if ( A[i,j] == 1 ): dot.edge ( c[i], c[j], '' ) dot.render ( 'abcd.dot', view = False ) filename = 'abcd.dot.png' print ( ' Graphics saved as "' + filename + '"' ) plt.close ( ) dot = Digraph ( comment = 'five', format = 'png' ) A = five_incidence ( ) n = A.shape[0] c = np.array ( [ '0', '1', '2', '3', '4' ] ) dot.node ( '0', 'Alpha' ) dot.node ( '1', 'Beta' ) dot.node ( '2', 'Gamma' ) dot.node ( '3', 'Delta' ) dot.node ( '4', 'Epsilon' ) for i in range ( 0, n ): for j in range ( 0, n ): if ( A[i,j] == 1 ): dot.edge ( c[i], c[j], '' ) dot.render ( 'five.dot', view = False ) filename = 'five.dot.png' print ( ' Graphics saved as "' + filename + '"' ) plt.close ( ) dot = Digraph ( comment = 'moler', format = 'png' ) A = moler_incidence ( ) n = A.shape[0] c = np.array ( [ '0', '1', '2', '3', '4', '5' ] ) dot.node ( '0', 'A' ) dot.node ( '1', 'B' ) dot.node ( '2', 'C' ) dot.node ( '3', 'D' ) dot.node ( '4', 'E' ) dot.node ( '5', 'F' ) for i in range ( 0, n ): for j in range ( 0, n ): if ( A[i,j] == 1 ): dot.edge ( c[i], c[j], '' ) dot.render ( 'moler.dot', view = False ) filename = 'moler.dot.png' print ( ' Graphics saved as "' + filename + '"' ) plt.close ( ) dot = Digraph ( comment = 'sauer', format = 'png' ) A = sauer_incidence ( ) n = A.shape[0] c = np.array ( [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', \ '10', '11', '12', '13', '14' ] ) dot.node ( '0', 'A' ) dot.node ( '1', 'B' ) dot.node ( '2', 'C' ) dot.node ( '3', 'D' ) dot.node ( '4', 'E' ) dot.node ( '5', 'F' ) dot.node ( '6', 'G' ) dot.node ( '7', 'H' ) dot.node ( '8', 'I' ) dot.node ( '9', 'J' ) dot.node ( '10', 'K' ) dot.node ( '11', 'L' ) dot.node ( '12', 'M' ) dot.node ( '13', 'N' ) dot.node ( '14', 'O' ) for i in range ( 0, n ): for j in range ( 0, n ): if ( A[i,j] == 1 ): dot.edge ( c[i], c[j], '' ) dot.render ( 'sauer.dot', view = False ) filename = 'sauer.dot.png' print ( ' Graphics saved as "' + filename + '"' ) plt.close ( ) return if ( __name__ == '__main__' ): digraph_plot ( )