annotate scripts/sparse/treeplot.m @ 6498:2c85044aa63f

[project @ 2007-04-05 17:59:47 by jwe]
author jwe
date Thu, 05 Apr 2007 17:59:47 +0000
parents 20c48710b2c7
children a8105a726e68
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
1 ## Copyright (C) 2005 Ivana Varekova
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
2 ##
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
3 ## This program is free software; you can redistribute it and/or modify
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
4 ## it under the terms of the GNU General Public License as published by
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
5 ## the Free Software Foundation; either version 2 of the License, or
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
6 ## (at your option) any later version.
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
7 ##
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
8 ## This program is distributed in the hope that it will be useful,
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
9 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
10 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
11 ## GNU General Public License for more details.
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
12 ##
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
13 ## You should have received a copy of the GNU General Public License
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
14 ## along with this program; if not, write to the Free Software
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
15 ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
16 ## 02110-1301 USA
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
17
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
18 ## -*- texinfo -*-
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
19 ## @deftypefn {Function File} {} treeplot (@var{Tree})
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
20 ## @deftypefnx {Function File} {} treeplot (@var{Tree}, @var{LineStyle}, @var{EdgeStyle})
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
21 ## Produces a graph of tree or forest. The first argument is vector of
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
22 ## predecessors, optional parametres @var{LineStyle} and @var{EdgeStyle}
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
23 ## define the output style. The complexity of the algorithm is O(n) in
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
24 ## terms of is time and memory requirements.
5642
2618a0750ae6 [project @ 2006-03-06 21:26:48 by jwe]
jwe
parents: 5578
diff changeset
25 ## @seealso{etreeplot, gplot}
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
26 ## @end deftypefn
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
27
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
28 function treeplot (Tree, NodeS, EdgeS)
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
29
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
30 if (nargin < 1 || nargin > 3 || nargout > 0)
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
31 print_usage ();
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
32 else
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
33 if (! ismatrix (Tree) || rows (Tree) != 1 || ! isnumeric (Tree)
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
34 || ! isvector (Tree) || any (Tree > length (Tree)))
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
35 error ("treeplot: the first input argument must be a vector of predecessors");
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
36 else
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
37 ## the inicialization of node end edge style
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
38 NodeStyle = "0*;;";
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
39 EdgeStyle = "1;;";
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
40 if (nargin > 2)
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
41 EdgeStyle = EdgeS;
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
42 if (nargin > 1)
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
43 if (length (findstr (NodeS, "*")) == 0
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
44 && length (findstr (NodeS, "+")) == 0
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
45 && length (findstr (NodeS, "x")) == 0)
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
46 NodeStyle = [NodeS, "o"];
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
47 else
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
48 NodeStyle = NodeS;
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
49 endif
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
50 endif
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
51 endif
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
52
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
53 Tree = Tree(:)'; ## make it a row vector
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
54 NodNumber = length (Tree); ## the count of nodes of the graph
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
55 ChildNumber = zeros (1, NodNumber+1); ## the number of childrens
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
56
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
57 for i = 1:NodNumber
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
58 ## VecOfChild is helping vector which is used to speed up the
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
59 ## choose of descendant nodes
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
60
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
61 ChildNumber(Tree(i)+1) = ChildNumber(Tree(i)+1) + 1;
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
62 endfor
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
63 Pos = 1;
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
64 for i = 1:NodNumber+1
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
65 Start(i) = Pos;
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
66 Help(i) = Pos;
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
67 Pos += ChildNumber(i);
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
68 Stop(i) = Pos;
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
69 endfor
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
70 for i = 1:NodNumber
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
71 VecOfChild(Help(Tree(i)+1)) = i;
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
72 Help(Tree(i)+1) = Help(Tree(i)+1)+1;
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
73 endfor
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
74
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
75 ## the number of "parent" (actual) node (it's descendants will be
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
76 ## browse in the next iteration)
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
77 ParNumber = 0;
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
78
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
79 ## the x-coordinate of the left most descendant of "parent node"
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
80 ## this value is increased in each leaf
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
81 LeftMost = 0;
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
82
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
83 ## the level of "parent" node (root level is NodNumber)
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
84 Level = NodNumber;
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
85
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
86 ## NodNumber - Max is the height of this graph
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
87 Max = NodNumber;
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
88
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
89 ## main stack - each item consists of two numbers - the number of
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
90 ## node and the number it's of parent node on the top of stack
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
91 ## there is "parent node"
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
92 St = [-1,0];
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
93
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
94 ## stack which is use to draw the graph edge (it have to be
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
95 ## uninterupted line)
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
96 Skelet = 0;
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
97
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
98 ## the top of the stack
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
99 while (ParNumber != -1)
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
100 if (Start(ParNumber+1) < Stop(ParNumber+1))
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
101 idx = VecOfChild(Start(ParNumber+1):Stop(ParNumber+1)-1);
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
102 else
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
103 idx = zeros (1, 0);
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
104 endif
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
105 ## add to idx the vector of parent descendants
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
106 St = [St ; [idx', ones(fliplr(size(idx)))*ParNumber]];
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
107 ## add to stack the records relevant to parent descandant s
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
108 if (ParNumber != 0)
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
109 Skelet = [Skelet; ([ones(size(idx))*ParNumber; idx])(:)];
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
110 endif
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
111
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
112 ## if there is not any descendant of "parent node":
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
113 if (St(end,2) != ParNumber)
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
114 LeftMost = LeftMost + 1;
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
115 XCoordinateR(ParNumber) = LeftMost;
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
116 Max = min (Max, Level);
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
117 if ((length(St)>1) && (find((shift(St,1)-St) == 0) >1)
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
118 && St(end,2) != St(end-1,2))
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
119 ## return to the nearest branching the position to return
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
120 ## position is the position on the stack, where should be
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
121 ## started further search (there are two nodes which has the
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
122 ## same parent node)
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
123 Position = (find((shift(St(:,2),1)-St(:,2)) == 0))(end)+1;
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
124 ParNumberVec = St(Position:end,2);
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
125 ## the vector of removed nodes (the content of stack form
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
126 ## position to end)
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
127 Skelet = [Skelet; flipud(ParNumberVec)];
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
128 Level = Level + length(ParNumberVec);
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
129 ## the level have to be decreased
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
130 XCoordinateR(ParNumberVec) = LeftMost;
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
131 St(Position:end,:) = [];
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
132 endif
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
133 ## remove the next node from "searched branch"
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
134 St(end,:) = [];
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
135 ## choose new "parent node"
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
136 ParNumber = St(end,1);
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
137 ## if there is another branch start to search it
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
138 if (ParNumber != -1)
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
139 Skelet = [Skelet ; St(end,2); ParNumber];
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
140 YCoordinate(ParNumber) = Level;
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
141 XCoordinateL(ParNumber) = LeftMost + 1;
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
142 endif
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
143 else
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
144 ## there were descendants of "parent nod" choose the last of
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
145 ## them and go on through it
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
146 Level--;
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
147 ParNumber = St(end,1);
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
148 YCoordinate(ParNumber) = Level;
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
149 XCoordinateL(ParNumber) = LeftMost+1;
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
150 endif
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
151 endwhile
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
152
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
153 ## calculate the x coordinates (the known values are the position
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
154 ## of most left and most right descendants)
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
155 XCoordinate = (XCoordinateL + XCoordinateR) / 2;
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
156
5578
591e9accd44c [project @ 2005-12-13 19:29:26 by jwe]
jwe
parents: 5576
diff changeset
157 hold ("on");
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
158
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
159 ## plot grah nodes
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
160 plot (XCoordinate,YCoordinate,NodeStyle);
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
161
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
162 ## helping command - usable for plotting edges
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
163 Skelet = [Skelet; 0];
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
164
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
165 ## draw graph edges
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
166 idx = find (Skelet == 0);
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
167
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
168 ## plot each tree component in one loop
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
169 for i = 2:length(idx)
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
170 ## tree component start
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
171 istart = idx(i-1) + 1;
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
172 ## tree component end
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
173 istop = idx(i) - 1;
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
174 if (istop - istart < 1)
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
175 continue;
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
176 endif
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
177 plot (XCoordinate(Skelet(istart:istop)),
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
178 YCoordinate(Skelet(istart:istop)), EdgeStyle)
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
179 endfor
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
180
6498
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
181 ## set axis and graph size
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
182 axis ([0.5, LeftMost+0.5, Max-0.5, NodNumber-0.5], "nolabel");
2c85044aa63f [project @ 2007-04-05 17:59:47 by jwe]
jwe
parents: 6339
diff changeset
183
5578
591e9accd44c [project @ 2005-12-13 19:29:26 by jwe]
jwe
parents: 5576
diff changeset
184 hold ("off");
5576
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
185
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
186 endif
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
187 endif
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
188 endfunction
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
189
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
190 %!demo
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
191 %! % Plot a simple tree plot
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
192 %! treeplot([2 4 2 0 6 4 6])
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
193
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
194 %!demo
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
195 %! % Plot a simple tree plot defining the edge and node styles
7e008607a86e [project @ 2005-12-13 19:05:54 by jwe]
jwe
parents:
diff changeset
196 %! treeplot([2 4 2 0 6 4 6], "b+", "g")