annotate scripts/sparse/treeplot.m @ 7016:93c65f2a5668

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