Mercurial > hg > camir-aes2014
comparison toolboxes/FullBNT-1.0.7/GraphViz/Old/graphToDot.m @ 0:e9a9cd732c1e tip
first hg version after svn
| author | wolffd |
|---|---|
| date | Tue, 10 Feb 2015 15:05:51 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:e9a9cd732c1e |
|---|---|
| 1 function graphToDot(adj, varargin) | |
| 2 % GRAPHTODOT Makes a GraphViz (AT&T) ile representing an adjacency matrix | |
| 3 % function graphToDot(adj, ...) | |
| 4 % Optional arguments should be passed as name/value pairs [default] | |
| 5 % | |
| 6 % 'filename' - if omitted, writes to 'tmp.dot' | |
| 7 % 'arc_label' - arc_label{i,j} is a string attached to the i-j arc [""] | |
| 8 % 'node_label' - node_label{i} is a string attached to the node i ["i"] | |
| 9 % 'width' - width in inches [10] | |
| 10 % 'height' - height in inches [10] | |
| 11 % 'leftright' - 1 means layout left-to-right, 0 means top-to-bottom [0] | |
| 12 % 'directed' - 1 means use directed arcs, 0 means undirected [1] | |
| 13 % | |
| 14 % For details on graphviz, See http://www.research.att.com/sw/tools/graphviz | |
| 15 % | |
| 16 % See also dot_to_graph and draw_dot | |
| 17 % | |
| 18 % First version written by Kevin Murphy 2002. | |
| 19 % Modified by Leon Peshkin, Jan 2004. | |
| 20 | |
| 21 node_label = []; arc_label = []; % set default args | |
| 22 width = 10; height = 10; | |
| 23 leftright = 0; directed = 1; filename = 'tmp.dot'; | |
| 24 | |
| 25 for i = 1:2:nargin-1 % get optional args | |
| 26 switch varargin{i} | |
| 27 case 'filename', filename = varargin{i+1}; | |
| 28 case 'node_label', node_label = varargin{i+1}; | |
| 29 case 'arc_label', arc_label = varargin{i+1}; | |
| 30 case 'width', width = varargin{i+1}; | |
| 31 case 'height', height = varargin{i+1}; | |
| 32 case 'leftright', leftright = varargin{i+1}; | |
| 33 case 'directed', directed = varargin{i+1}; | |
| 34 end | |
| 35 end | |
| 36 | |
| 37 fid = fopen(filename, 'w'); | |
| 38 if directed | |
| 39 fprintf(fid, 'digraph G {\n'); | |
| 40 arctxt = '->'; | |
| 41 if isempty(arc_label) | |
| 42 labeltxt = ''; | |
| 43 else | |
| 44 labeltxt = '[label="%s"]'; | |
| 45 end | |
| 46 else | |
| 47 fprintf(fid, 'graph G {\n'); | |
| 48 arctxt = '--'; | |
| 49 if isempty(arc_label) | |
| 50 labeltxt = '[dir=none]'; | |
| 51 else | |
| 52 labeltext = '[label="%s",dir=none]'; | |
| 53 end | |
| 54 end | |
| 55 edgeformat = strcat(['%d ',arctxt,' %d ',labeltxt,';\n']); | |
| 56 fprintf(fid, 'center = 1;\n'); | |
| 57 fprintf(fid, 'size=\"%d,%d\";\n', width, height); | |
| 58 if leftright | |
| 59 fprintf(fid, 'rankdir=LR;\n'); | |
| 60 end | |
| 61 Nnds = length(adj); | |
| 62 for node = 1:Nnds % process nodes | |
| 63 if isempty(node_label) | |
| 64 fprintf(fid, '%d;\n', node); | |
| 65 else | |
| 66 fprintf(fid, '%d [ label = "%s" ];\n', node, | |
| 67 node_label{node}); | |
| 68 end | |
| 69 end | |
| 70 for node1 = 1:Nnds % process edges | |
| 71 if directed | |
| 72 arcs = find(adj(node1,:)); % children(adj, node); | |
| 73 else | |
| 74 arcs = find(adj(node1,node1+1:Nnds)); % remove duplicate arcs | |
| 75 end | |
| 76 for node2 = arcs | |
| 77 fprintf(fid, edgeformat, node1, node2); | |
| 78 end | |
| 79 end | |
| 80 fprintf(fid, '}'); | |
| 81 fclose(fid); | |
| 82 | |
| 83 | |
| 84 |
