Mercurial > hg > octave-lyh
annotate scripts/plot/private/__stem__.m @ 14138:72c96de7a403 stable
maint: update copyright notices for 2012
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 02 Jan 2012 14:25:41 -0500 |
parents | b0084095098e |
children | 5d3a684236b0 |
rev | line source |
---|---|
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
11589
diff
changeset
|
1 ## Copyright (C) 2006-2012 Michel D. Schmid |
7217 | 2 ## |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7 ## the Free Software Foundation; either version 3 of the License, or (at | |
8 ## your option) any later version. | |
9 ## | |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
16 ## along with Octave; see the file COPYING. If not, see | |
17 ## <http://www.gnu.org/licenses/>. | |
18 | |
8812
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8507
diff
changeset
|
19 ## -*- texinfo -*- |
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8507
diff
changeset
|
20 ## @deftypefn {Function File} {@var{h} =} __stem__ (@var{have_z}, @var{varargin}) |
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8507
diff
changeset
|
21 ## Undocumented internal function. |
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8507
diff
changeset
|
22 ## @end deftypefn |
7217 | 23 |
24 ## Author: Michel D. Schmid <michaelschmid@users.sourceforge.net> | |
25 ## Adapted-by: jwe | |
26 | |
27 function h = __stem__ (have_z, varargin) | |
28 | |
7218 | 29 if (have_z) |
30 caller = "stem3"; | |
31 else | |
32 caller = "stem"; | |
33 endif | |
7217 | 34 |
7218 | 35 [ax, varargin, nargin] = __plt_get_axis_arg__ (caller, varargin{:}); |
7217 | 36 |
8070
3b53b25e2550
Add data sources and line series
David Bateman <dbateman@free.fr>
parents:
8056
diff
changeset
|
37 [x, y, z, dofill, llc, ls, mmc, ms, varargin] = ... |
3b53b25e2550
Add data sources and line series
David Bateman <dbateman@free.fr>
parents:
8056
diff
changeset
|
38 check_stem_arg (have_z, varargin{:}); |
7217 | 39 |
40 oldax = gca (); | |
41 unwind_protect | |
42 axes (ax); | |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
43 hold_state = get (ax, "nextplot"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
44 newplot (); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
45 h = []; |
7217 | 46 |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
47 nx = rows (x); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
48 for i = 1: columns (x) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
49 if (have_z) |
10549 | 50 xt = x(:)'; |
51 xt = [xt; xt; NaN(1, nx)](:); | |
52 yt = y(:)'; | |
53 yt = [yt; yt; NaN(1, nx)](:); | |
54 zt = z(:)'; | |
55 zt = [zeros(1, nx); zt; NaN(1, nx)](:); | |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
56 else |
10549 | 57 xt = x(:, i)'; |
58 xt = [xt; xt; NaN(1, nx)](:); | |
59 yt = y(:, i)'; | |
60 yt = [zeros(1, nx); yt; NaN(1, nx)](:); | |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
61 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
62 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
63 hg = hggroup (); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
64 h = [h; hg]; |
8075
a028a5960e18
Fix for hold with no figures/axes. Set prop/val pairs to hggroups rather than underlying objects. Fix for equality test in array_property
David Bateman <dbateman@free.fr>
parents:
8070
diff
changeset
|
65 args = __add_datasource__ (caller, hg, {"x", "y", "z"}, varargin{:}); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
66 |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
67 if (i == 1) |
10549 | 68 set (ax, "nextplot", "add"); |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
69 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
70 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
71 if (isempty (llc)) |
10549 | 72 lc = __next_line_color__ (); |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
73 else |
10549 | 74 lc = llc; |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
75 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
76 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
77 if (isempty (mmc)) |
10549 | 78 mc = lc; |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
79 else |
10549 | 80 mc = mmc; |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
81 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
82 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
83 if (dofill) |
10549 | 84 fc = mc; |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
85 else |
10549 | 86 fc = "none"; |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
87 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
88 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
89 if (have_z) |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
90 h_stems = plot3 (xt, yt, zt, "color", lc, "linestyle", ls, |
10549 | 91 "parent", hg, x, y, z, "color", mc, |
92 "marker", ms, "linestyle", "none", | |
93 "markerfacecolor", fc, "parent", hg); | |
7217 | 94 |
10549 | 95 h_baseline = []; |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
96 else |
10549 | 97 h_stems = plot (xt, yt, "color", lc, "linestyle", ls, |
98 "parent", hg, x(:,i), y(:, i), "color", mc, "marker", | |
99 ms, "linestyle", "none", "markerfacecolor", | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
100 fc, "parent", hg); |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
101 |
11313
988d2bd6bacd
__stem__.m: Each stem hggroup should have its own baseline.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
102 x_axis_range = get (ax, "xlim"); |
988d2bd6bacd
__stem__.m: Each stem hggroup should have its own baseline.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
103 h_baseline = line (x_axis_range, [0, 0], "color", [0, 0, 0]); |
988d2bd6bacd
__stem__.m: Each stem hggroup should have its own baseline.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
104 set (h_baseline, "handlevisibility", "off"); |
988d2bd6bacd
__stem__.m: Each stem hggroup should have its own baseline.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
105 set (h_baseline, "xliminclude", "off"); |
988d2bd6bacd
__stem__.m: Each stem hggroup should have its own baseline.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
106 addlistener (ax, "xlim", @update_xlim); |
988d2bd6bacd
__stem__.m: Each stem hggroup should have its own baseline.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
107 addlistener (h_baseline, "ydata", @update_baseline); |
988d2bd6bacd
__stem__.m: Each stem hggroup should have its own baseline.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
108 addlistener (h_baseline, "visible", @update_baseline); |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
109 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
110 |
8506 | 111 ## Setup the hggroup and listeners. |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
112 addproperty ("showbaseline", hg, "radio", "{on}|off"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
113 addproperty ("basevalue", hg, "data", 0); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
114 addproperty ("baseline", hg, "data", h_baseline); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
115 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
116 if (!have_z) |
10549 | 117 addlistener (hg, "showbaseline", @show_baseline); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
118 addlistener (hg, "basevalue", @move_baseline); |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
119 endif |
7217 | 120 |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
121 addproperty ("color", hg, "linecolor", lc); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
122 addproperty ("linewidth", hg, "linelinewidth", 0.5); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
123 addproperty ("linestyle", hg, "linelinestyle", ls); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
124 addproperty ("marker", hg, "linemarker", ms); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
125 addproperty ("markerfacecolor", hg, "linemarkerfacecolor", fc); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
126 addproperty ("markersize", hg, "linemarkersize", 6); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
127 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
128 addlistener (hg, "color", @update_props); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
129 addlistener (hg, "linewidth", @update_props); |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
130 addlistener (hg, "linestyle", @update_props); |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
131 addlistener (hg, "marker", @update_props); |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
132 addlistener (hg, "markerfacecolor", @update_props); |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
133 addlistener (hg, "markersize", @update_props); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
134 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
135 addproperty ("xdata", hg, "data", x(:, i)); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
136 addproperty ("ydata", hg, "data", y(:, i)); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
137 if (have_z) |
10549 | 138 addproperty ("zdata", hg, "data", z(:, i)); |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
139 else |
10549 | 140 addproperty ("zdata", hg, "data", []); |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
141 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
142 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
143 addlistener (hg, "xdata", @update_data); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
144 addlistener (hg, "ydata", @update_data); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
145 addlistener (hg, "zdata", @update_data); |
8075
a028a5960e18
Fix for hold with no figures/axes. Set prop/val pairs to hggroups rather than underlying objects. Fix for equality test in array_property
David Bateman <dbateman@free.fr>
parents:
8070
diff
changeset
|
146 |
8079
082fa7859574
Additional do not call set with empty arguments fixes
David Bateman <dbateman@free.fr>
parents:
8075
diff
changeset
|
147 if (! isempty (args)) |
10549 | 148 set (hg, args{:}); |
8079
082fa7859574
Additional do not call set with empty arguments fixes
David Bateman <dbateman@free.fr>
parents:
8075
diff
changeset
|
149 endif |
8075
a028a5960e18
Fix for hold with no figures/axes. Set prop/val pairs to hggroups rather than underlying objects. Fix for equality test in array_property
David Bateman <dbateman@free.fr>
parents:
8070
diff
changeset
|
150 if (i == 1 && !isempty(h_baseline)) |
10549 | 151 set (h_baseline, "parent", get (hg, "parent")); |
8075
a028a5960e18
Fix for hold with no figures/axes. Set prop/val pairs to hggroups rather than underlying objects. Fix for equality test in array_property
David Bateman <dbateman@free.fr>
parents:
8070
diff
changeset
|
152 endif |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
153 endfor |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
154 |
7217 | 155 unwind_protect_cleanup |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
156 set (ax, "nextplot", hold_state); |
7217 | 157 axes (oldax); |
158 end_unwind_protect | |
159 endfunction | |
160 | |
8070
3b53b25e2550
Add data sources and line series
David Bateman <dbateman@free.fr>
parents:
8056
diff
changeset
|
161 function [x, y, z, dofill, lc, ls, mc, ms, newargs] = check_stem_arg (have_z, varargin) |
7217 | 162 |
8506 | 163 ## FIXME -- there seems to be a lot of duplicated code in this |
164 ## function. It seems like it should be possible to simplify things | |
165 ## by combining some of the nearly identical code sections into | |
166 ## additional subfunctions. | |
167 | |
7218 | 168 if (have_z) |
169 caller = "stem3"; | |
170 else | |
171 caller = "stem"; | |
172 endif | |
173 | |
8506 | 174 ## Remove prop/val pairs from data to consider. |
8070
3b53b25e2550
Add data sources and line series
David Bateman <dbateman@free.fr>
parents:
8056
diff
changeset
|
175 i = 2; |
3b53b25e2550
Add data sources and line series
David Bateman <dbateman@free.fr>
parents:
8056
diff
changeset
|
176 newargs = {}; |
3b53b25e2550
Add data sources and line series
David Bateman <dbateman@free.fr>
parents:
8056
diff
changeset
|
177 while (i < length (varargin)) |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8079
diff
changeset
|
178 if (ischar (varargin{i}) && !(strcmpi ("fill", varargin{i}) |
10549 | 179 || strcmpi ("filled", varargin{i}))) |
8070
3b53b25e2550
Add data sources and line series
David Bateman <dbateman@free.fr>
parents:
8056
diff
changeset
|
180 newargs{end + 1} = varargin{i}; |
3b53b25e2550
Add data sources and line series
David Bateman <dbateman@free.fr>
parents:
8056
diff
changeset
|
181 newargs{end + 1} = varargin{i + 1}; |
3b53b25e2550
Add data sources and line series
David Bateman <dbateman@free.fr>
parents:
8056
diff
changeset
|
182 nargin = nargin - 2; |
3b53b25e2550
Add data sources and line series
David Bateman <dbateman@free.fr>
parents:
8056
diff
changeset
|
183 varargin(i:i+1) = []; |
3b53b25e2550
Add data sources and line series
David Bateman <dbateman@free.fr>
parents:
8056
diff
changeset
|
184 else |
3b53b25e2550
Add data sources and line series
David Bateman <dbateman@free.fr>
parents:
8056
diff
changeset
|
185 i++; |
3b53b25e2550
Add data sources and line series
David Bateman <dbateman@free.fr>
parents:
8056
diff
changeset
|
186 endif |
3b53b25e2550
Add data sources and line series
David Bateman <dbateman@free.fr>
parents:
8056
diff
changeset
|
187 endwhile |
3b53b25e2550
Add data sources and line series
David Bateman <dbateman@free.fr>
parents:
8056
diff
changeset
|
188 |
8506 | 189 ## set specifiers to default values. |
7217 | 190 [lc, ls, mc, ms] = set_default_values (); |
191 dofill = 0; | |
192 fill_2 = 0; | |
193 linespec_2 = 0; | |
194 z = []; | |
195 | |
8506 | 196 ## Check input arguments. |
7217 | 197 if (nargin == 2) |
198 if (have_z) | |
199 z = varargin{1}; | |
7218 | 200 x = 1:rows (z); |
201 y = 1:columns (z); | |
7217 | 202 else |
203 y = varargin{1}; | |
204 if (isvector (y)) | |
10549 | 205 x = 1:length (y); |
7217 | 206 elseif (ismatrix (y)) |
10549 | 207 x = 1:rows (y); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
208 else |
10549 | 209 error ("stem: Y must be a matrix"); |
7217 | 210 endif # in each case, x & y will be defined |
211 endif | |
212 elseif (nargin == 3) | |
8506 | 213 ## Several possibilities |
214 ## | |
7217 | 215 ## 1. the real y data |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
216 ## 2. 'filled' |
7217 | 217 ## 3. line spec |
218 if (ischar (varargin{2})) | |
8506 | 219 ## Only 2. or 3. possible. |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
220 if (strcmpi ("fill", varargin{2}) || strcmpi ("filled", varargin{2})) |
10549 | 221 dofill = 1; |
7217 | 222 else |
10549 | 223 ## Parse the linespec. |
224 [lc, ls, mc, ms] = stem_line_spec (caller, varargin{2}); | |
7217 | 225 endif |
226 if (have_z) | |
10549 | 227 z = varargin{1}; |
228 x = 1:rows (z); | |
229 y = 1:columns (z); | |
7217 | 230 else |
10549 | 231 y = varargin{1}; |
232 if (isvector (y)) | |
233 x = 1:length (y); | |
234 elseif (ismatrix (y)) | |
235 x = 1:rows (y); | |
236 else | |
237 error ("stem: Y must be a matrix"); | |
238 endif # in each case, x & y will be defined | |
7217 | 239 endif |
240 else | |
241 if (have_z) | |
10549 | 242 error ("stem3: must define X, Y and Z"); |
7217 | 243 else |
10549 | 244 ## Must be the real y data. |
245 x = varargin{1}; | |
246 y = varargin{2}; | |
247 if (! (ismatrix (x) && ismatrix (y))) | |
248 error ("stem: X and Y must be matrices"); | |
249 endif | |
7217 | 250 endif |
251 endif | |
252 elseif (nargin == 4) | |
8506 | 253 ## Again, several possibilities: |
254 ## | |
7217 | 255 ## arg2 1. real y |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
256 ## arg2 2. 'filled' or linespec |
7217 | 257 ## arg3 1. real z |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
258 ## arg3 2. 'filled' or linespec |
7217 | 259 if (ischar (varargin{2})) |
8506 | 260 ## Only arg2 2. / arg3 1. & arg3 3. are possible. |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
261 if (strcmpi ("fill", varargin{2}) || strcmpi ("filled", varargin{2})) |
10549 | 262 dofill = 1; |
263 fill_2 = 1; # Be sure, no second "fill" is in the arguments. | |
7217 | 264 else |
10549 | 265 ## Must be a linespec. |
266 [lc, ls, mc, ms] = stem_line_spec (caller, varargin{2}); | |
267 linespec_2 = 1; | |
7217 | 268 endif |
269 if (have_z) | |
10549 | 270 z = varargin{1}; |
271 x = 1:rows (z); | |
272 y = 1:columns (z); | |
7217 | 273 else |
10549 | 274 y = varargin{1}; |
275 if (isvector (y)) | |
276 x = 1:length (y); | |
277 elseif (ismatrix (y)) | |
278 x = 1:rows (y); | |
279 else | |
280 error ("stem: Y must be a matrix"); | |
281 endif # in each case, x & y will be defined | |
7217 | 282 endif |
283 else | |
284 if (have_z) | |
10549 | 285 x = varargin{1}; |
286 y = varargin{2}; | |
287 z = varargin{3}; | |
288 if (! (ismatrix (x) && ismatrix (y) && ismatrix (z))) | |
289 error ("stem3: X, Y and Z must be matrices"); | |
290 endif | |
7217 | 291 else |
10549 | 292 ## must be the real y data. |
293 x = varargin{1}; | |
294 y = varargin{2}; | |
295 if (! (ismatrix (x) && ismatrix (y))) | |
296 error ("stem: X and Y must be matrices"); | |
297 endif | |
7217 | 298 endif |
299 endif # if ischar(varargin{2}) | |
300 if (! have_z) | |
8506 | 301 ## varargin{3} must be char. |
302 ## Check for "fill. | |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8079
diff
changeset
|
303 if ((strcmpi (varargin{3}, "fill") || strcmpi (varargin{3}, "filled")) |
10549 | 304 && fill_2) |
305 error ("stem: duplicate fill argument"); | |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8079
diff
changeset
|
306 elseif (strcmpi ("fill", varargin{3}) && linespec_2) |
10549 | 307 ## Must be "fill". |
308 dofill = 1; | |
309 fill_2 = 1; | |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8079
diff
changeset
|
310 elseif ((strcmpi (varargin{3}, "fill") || strcmpi (varargin{3}, "filled")) |
10549 | 311 && !linespec_2) |
312 ## Must be "fill". | |
313 dofill = 1; | |
314 fill_2 = 1; | |
7217 | 315 elseif (! linespec_2) |
10549 | 316 ## Must be linespec. |
317 [lc, ls, mc, ms] = stem_line_spec (caller, varargin{3}); | |
318 linespec_2 = 1; | |
7217 | 319 endif |
320 endif | |
321 elseif (nargin == 5) | |
322 if (have_z) | |
323 x = varargin{1}; | |
324 y = varargin{2}; | |
325 z = varargin{3}; | |
326 if (! (ismatrix (x) && ismatrix (y) && ismatrix (z))) | |
10549 | 327 error ("stem3: X, Y and Z must be matrices"); |
7217 | 328 endif |
329 else | |
330 x = varargin{1}; | |
331 y = varargin{2}; | |
332 if (! (ismatrix (x) && ismatrix (y))) | |
10549 | 333 error ("stem: X and Y must be matrices"); |
7217 | 334 endif |
335 endif | |
336 | |
337 if (! have_z) | |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8079
diff
changeset
|
338 if (strcmpi (varargin{3}, "fill") || strcmpi (varargin{3}, "filled")) |
10549 | 339 dofill = 1; |
340 fill_2 = 1; # Be sure, no second "fill" is in the arguments. | |
7217 | 341 else |
10549 | 342 ## Must be a linespec. |
343 [lc, ls, mc, ms] = stem_line_spec (caller, varargin{3}); | |
344 linespec_2 = 1; | |
7217 | 345 endif |
346 endif | |
347 | |
8506 | 348 ## Check for "fill". |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8079
diff
changeset
|
349 if ((strcmpi (varargin{4}, "fill") || strcmpi (varargin{4}, "filled")) |
10549 | 350 && fill_2) |
7218 | 351 error ("%s: duplicate fill argument", caller); |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8079
diff
changeset
|
352 elseif ((strcmpi (varargin{4}, "fill") || strcmpi (varargin{4}, "filled")) |
10549 | 353 && linespec_2) |
8506 | 354 ## Must be "fill". |
7217 | 355 dofill = 1; |
356 fill_2 = 1; | |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8079
diff
changeset
|
357 elseif (!strcmpi (varargin{4}, "fill") && !strcmpi (varargin{4}, "filled") |
10549 | 358 && !linespec_2) |
8506 | 359 ## Must be linespec. |
7218 | 360 [lc, ls, mc, ms] = stem_line_spec (caller, varargin{4}); |
7217 | 361 linespec_2 = 1; |
362 endif | |
363 elseif (nargin == 6 && have_z) | |
364 x = varargin{1}; | |
365 y = varargin{2}; | |
366 z = varargin{3}; | |
367 if (! (ismatrix (x) && ismatrix (y) && ismatrix (z))) | |
368 error ("stem3: X, Y and Z must be matrices"); | |
369 endif | |
370 | |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8079
diff
changeset
|
371 if (strcmpi (varargin{4}, "fill") || strcmpi (varargin{4}, "filled")) |
7217 | 372 dofill = 1; |
373 fill_2 = 1; # be sure, no second "fill" is in the arguments | |
374 else | |
8506 | 375 ## Must be a linespec. |
7218 | 376 [lc, ls, mc, ms] = stem_line_spec (caller, varargin{4}); |
7217 | 377 linespec_2 = 1; |
378 endif | |
379 | |
380 ## check for "fill" .. | |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8079
diff
changeset
|
381 if ((strcmpi (varargin{5}, "fill") || strcmpi (varargin{5}, "filled")) |
10549 | 382 && fill_2) |
7218 | 383 error ("stem3: duplicate fill argument"); |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8079
diff
changeset
|
384 elseif ((strcmpi (varargin{5}, "fill") || strcmpi (varargin{5}, "filled")) |
10549 | 385 && linespec_2) |
8506 | 386 ## Must be "fill". |
7217 | 387 dofill = 1; |
388 fill_2 = 1; | |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8079
diff
changeset
|
389 elseif (!strcmpi (varargin{5}, "fill") && !strcmpi (varargin{5}, "filled") |
10549 | 390 && !linespec_2) |
8506 | 391 ## Must be linespec. |
7218 | 392 [lc, ls, mc, ms] = stem_line_spec (caller, varargin{5}); |
7217 | 393 linespec_2 = 1; |
394 endif | |
395 else | |
7218 | 396 error ("%s: incorrect number of arguments", caller); |
7217 | 397 endif |
398 | |
8506 | 399 ## Check sizes of x, y and z. |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
400 if (have_z) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
401 if (!size_equal (x, y, z)) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
402 error ("stem3: inconsistent size of x, y and z"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
403 else |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
404 x = x(:); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
405 y = y(:); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
406 z = z(:); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
407 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
408 else |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
409 if (isvector (x)) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
410 x = x(:); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
411 if (isvector (y)) |
10549 | 412 if (length (x) != length (y)) |
413 error ("stem: inconsistent size of x and y"); | |
414 else | |
415 y = y(:); | |
416 endif | |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
417 else |
10549 | 418 if (length (x) == rows (y)) |
419 x = repmat (x(:), 1, columns (y)); | |
420 else | |
421 error ("stem: inconsistent size of x and y"); | |
422 endif | |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
423 endif |
8507 | 424 elseif (!size_equal (x, y)) |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
425 error ("stem: inconsistent size of x and y"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
426 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
427 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
428 |
7217 | 429 endfunction |
430 | |
7218 | 431 function [lc, ls, mc, ms] = stem_line_spec (caller, str) |
7217 | 432 if (! ischar (str)) |
7218 | 433 error ("%s: expecting argument to be \"fill\" or a string of specifiers", |
10549 | 434 caller); |
7217 | 435 endif |
436 [lc, ls, mc, ms] = set_default_values (); | |
437 ## Parse the line specifier string. | |
438 cur_props = __pltopt__ ("stem", str, false); | |
439 for i = 1:length(cur_props) | |
440 if (isfield (cur_props(i), "color") && ! isempty (cur_props(i).color)); # means line color | |
441 mc = lc = cur_props(i).color; | |
442 elseif (isfield (cur_props(i), "linestyle")) | |
443 ls = cur_props(i).linestyle; | |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
9896
diff
changeset
|
444 if (isempty (ls)) |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
9896
diff
changeset
|
445 ls = __next_line_style__ (); |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
9896
diff
changeset
|
446 endif |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8079
diff
changeset
|
447 elseif (isfield (cur_props(i), "marker") && ! strcmpi (cur_props(i).marker, "none")) |
7217 | 448 ms = cur_props(i).marker; |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
9896
diff
changeset
|
449 if (isempty (ms)) |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
9896
diff
changeset
|
450 [dummy, ms] = __next_line_style__ (); |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
9896
diff
changeset
|
451 endif |
7217 | 452 endif |
453 endfor | |
454 endfunction | |
455 | |
456 function [lc, ls, mc, ms] = set_default_values () | |
457 ## set default values | |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
458 mc = []; |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
459 lc = []; |
7217 | 460 ls = "-"; |
461 ms = "o"; | |
462 endfunction | |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
463 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
464 function update_xlim (h, d) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
465 kids = get (h, "children"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
466 xlim = get (h, "xlim"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
467 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
468 for i = 1 : length (kids) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
469 obj = get (kids (i)); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
470 if (strcmp (obj.type, "hggroup") && isfield (obj, "baseline")) |
8056
9a6f4713f765
Add area, bar, quiver and stair series graphics objects. Document them
David Bateman <dbateman@free.fr>
parents:
8052
diff
changeset
|
471 if (any (get (obj.baseline, "xdata") != xlim)) |
10549 | 472 set (obj.baseline, "xdata", xlim); |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
473 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
474 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
475 endfor |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
476 endfunction |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
477 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
478 function update_baseline (h, d) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
479 visible = get (h, "visible"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
480 ydata = get (h, "ydata")(1); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
481 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
482 kids = get (get (h, "parent"), "children"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
483 for i = 1 : length (kids) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
484 obj = get (kids (i)); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
485 if (strcmp (obj.type, "hggroup") && isfield (obj, "baseline") |
10549 | 486 && obj.baseline == h) |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
487 ## Only alter if changed to avoid recursion of the listener functions |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8079
diff
changeset
|
488 if (! strcmpi (get (kids(i), "showbaseline"), visible)) |
10549 | 489 set (kids (i), "showbaseline", visible); |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
490 endif |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8079
diff
changeset
|
491 if (! strcmpi (get (kids(i), "basevalue"), visible)) |
10549 | 492 set (kids (i), "basevalue", ydata); |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
493 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
494 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
495 endfor |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
496 endfunction |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
497 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
498 function show_baseline (h, d) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
499 set (get (h, "baseline"), "visible", get (h, "showbaseline")); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
500 endfunction |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
501 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
502 function move_baseline (h, d) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
503 b0 = get (h, "basevalue"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
504 bl = get (h, "baseline"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
505 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
506 if (get (bl, "ydata") != [b0, b0]) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
507 set (bl, "ydata", [b0, b0]); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
508 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
509 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
510 kids = get (h, "children"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
511 yt = get(h, "ydata")(:)'; |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
512 ny = length (yt); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
513 yt = [b0 * ones(1, ny); yt; NaN(1, ny)](:); |
8315
e9687c313d5f
Fix callbacks in stem and quiver for change in order of children. Fix for scaling in quiver for single arrow
David Bateman <dbateman@free.fr>
parents:
8238
diff
changeset
|
514 set (kids(2), "ydata", yt); |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
515 endfunction |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
516 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
517 function update_props (h, d) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
518 kids = get (h, "children"); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
519 set (kids(2), "color", get (h, "color"), |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
520 "linewidth", get (h, "linewidth"), |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
521 "linestyle", get (h, "linestyle")); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
522 set (kids(1), "color", get (h, "color"), |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
523 "marker", get (h, "marker"), |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
524 "markerfacecolor", get (h, "markerfacecolor"), |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
525 "markersize", get (h, "markersize")); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
526 endfunction |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
527 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
528 function update_data (h, d) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
529 x = get (h, "xdata"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
530 y = get (h, "ydata"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
531 z = get (h, "zdata"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
532 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
533 if (!isempty (z) && size_equal (x, y, z)) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
534 error ("stem3: inconsistent size of x, y and z"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
535 elseif (numel(x) != numel (y)) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
536 error ("stem: inconsistent size of x and y"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
537 else |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
538 bl = get (h, "basevalue"); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
539 nx = numel (x); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
540 x = x(:)'; |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
541 xt = [x; x; NaN(1, nx)](:); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
542 if (! isempty (z)) |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
543 y = y(:)'; |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
544 yt = [y; y; NaN(1, nx)](:); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
545 z = z(:)'; |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
546 zt = [bl * ones(1, nx); z; NaN(1, nx)](:); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
547 else |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
548 y = y(:)'; |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
549 yt = [bl * ones(1, nx); y; NaN(1, nx)](:); |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
550 zt = []; |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
551 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
552 |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
553 kids = get (h, "children"); |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11587
diff
changeset
|
554 set (kids(2), "xdata", xt, "ydata", yt, "zdata", zt); |
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11587
diff
changeset
|
555 set (kids(1), "xdata", x, "ydata", y, "zdata", z); |
8052
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
556 endif |
961d4c52ffae
Convert stem and stem3 to use stem series objects
David Bateman <dbateman@free.fr>
parents:
7218
diff
changeset
|
557 endfunction |