Mercurial > octave-nkf
annotate scripts/plot/private/__bar__.m @ 17519:cc9befe5d271
Overhaul bar family of plot functions.
* scripts/plot/bar.m, scripts/plot/barh.m: Document new "hist", "histc"
arguments.
* scripts/plot/private/__bar__.m: "grouped" bars now default to having
a gap between them for Matlab compatibility. Added new style options
"hist", "histc". Renamed variable names for clarity. Removed unnecessary
for loops in listener functions. Stop recursion in listener functions.
author | Rik <rik@octave.org> |
---|---|
date | Mon, 30 Sep 2013 16:50:41 -0700 |
parents | 177147bf7b55 |
children | 76614e624818 |
rev | line source |
---|---|
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
13886
diff
changeset
|
1 ## Copyright (C) 1996-2012 John W. Eaton |
6540 | 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 | |
7016 | 7 ## the Free Software Foundation; either version 3 of the License, or (at |
8 ## your option) any later version. | |
6540 | 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 | |
7016 | 16 ## along with Octave; see the file COPYING. If not, see |
17 ## <http://www.gnu.org/licenses/>. | |
6540 | 18 |
8812
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8664
diff
changeset
|
19 ## -*- texinfo -*- |
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8664
diff
changeset
|
20 ## @deftypefn {Function File} {} __bar__ (@var{vertical}, @var{func}, @dots{}) |
6895 | 21 ## Undocumented internal function. |
8812
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8664
diff
changeset
|
22 ## @end deftypefn |
6540 | 23 |
24 ## Author: jwe | |
25 | |
26 function varargout = __bar__ (vertical, func, varargin) | |
6886 | 27 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
28 [hax, varargin, nargin] = __plt_get_axis_arg__ (func, varargin{:}); |
7189 | 29 |
7148 | 30 ## Slightly smaller than 0.8 to avoid clipping issue in gnuplot 4.0 |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
31 width = 0.8 - 10 * eps; |
6540 | 32 group = true; |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
33 histc = NA; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
34 bv = 0; # BaseValue |
6540 | 35 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
36 if (nargin > 1 && isnumeric (varargin{2})) |
6540 | 37 x = varargin{1}; |
6886 | 38 if (isvector (x)) |
6540 | 39 x = x(:); |
40 endif | |
41 y = varargin{2}; | |
6886 | 42 if (isvector (y)) |
6540 | 43 y = y(:); |
44 endif | |
14872
c2dbdeaa25df
maint: use rows() and columns() to clarify m-files.
Rik <octave@nomad.inbox5.com>
parents:
14868
diff
changeset
|
45 if (rows (x) != rows (y)) |
6540 | 46 y = varargin{1}; |
6886 | 47 if (isvector (y)) |
10549 | 48 y = y(:); |
6540 | 49 endif |
14872
c2dbdeaa25df
maint: use rows() and columns() to clarify m-files.
Rik <octave@nomad.inbox5.com>
parents:
14868
diff
changeset
|
50 x = [1:rows(y)]'; |
6540 | 51 idx = 2; |
52 else | |
6886 | 53 if (! isvector (x)) |
17058
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
54 error ("%s: X must be a vector", func); |
6540 | 55 endif |
56 idx = 3; | |
57 endif | |
58 else | |
59 y = varargin{1}; | |
6886 | 60 if (isvector (y)) |
6540 | 61 y = y(:); |
62 endif | |
14872
c2dbdeaa25df
maint: use rows() and columns() to clarify m-files.
Rik <octave@nomad.inbox5.com>
parents:
14868
diff
changeset
|
63 x = [1:rows(y)]'; |
6540 | 64 idx = 2; |
65 endif | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
66 |
6540 | 67 newargs = {}; |
6886 | 68 have_line_spec = false; |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
69 while (idx <= nargin) |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8056
diff
changeset
|
70 if (ischar (varargin{idx}) && strcmpi (varargin{idx}, "grouped")) |
6540 | 71 group = true; |
72 idx++; | |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8056
diff
changeset
|
73 elseif (ischar (varargin{idx}) && strcmpi (varargin{idx}, "stacked")) |
6540 | 74 group = false; |
75 idx++; | |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
76 elseif (ischar (varargin{idx}) && strcmpi (varargin{idx}, "histc")) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
77 group = true; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
78 histc = true; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
79 idx++; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
80 elseif (ischar (varargin{idx}) && strcmpi (varargin{idx}, "hist")) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
81 group = true; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
82 histc = false; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
83 idx++; |
6540 | 84 else |
17462
177147bf7b55
Overhaul use of __pltopt__.m to correctly check for cellstr, not just cell.
Rik <rik@octave.org>
parents:
17301
diff
changeset
|
85 if ((ischar (varargin{idx}) || iscellstr (varargin{idx})) |
10549 | 86 && ! have_line_spec) |
87 [linespec, valid] = __pltopt__ (func, varargin{idx}, false); | |
88 if (valid) | |
89 have_line_spec = true; | |
14388
b5b49f400f9b
__bar__.m: Add missing semicolon to stop internal results being printed.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
90 ## FIXME: strange parse error requires semicolon to be spaced |
b5b49f400f9b
__bar__.m: Add missing semicolon to stop internal results being printed.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
91 ## away from closing ']' on next line. |
b5b49f400f9b
__bar__.m: Add missing semicolon to stop internal results being printed.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
92 newargs = [{"facecolor", linespec.color}, newargs] ; |
10549 | 93 idx++; |
94 continue; | |
95 endif | |
6540 | 96 endif |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14388
diff
changeset
|
97 if (isscalar (varargin{idx})) |
10549 | 98 width = varargin{idx++}; |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
99 elseif (idx == nargin) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
100 newargs = [newargs, varargin(idx++)]; |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8056
diff
changeset
|
101 elseif (ischar (varargin{idx}) |
10549 | 102 && strcmpi (varargin{idx}, "basevalue") |
103 && isscalar (varargin{idx+1})) | |
7325 | 104 bv = varargin{idx+1}; |
105 idx += 2; | |
6540 | 106 else |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
107 newargs = [newargs, varargin(idx:idx+1)]; |
10549 | 108 idx += 2; |
6540 | 109 endif |
110 endif | |
111 endwhile | |
112 | |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
113 ngrp = rows (x); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
114 if (ngrp != rows (y)) |
17058
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
115 error ("%s: length of X and Y must be equal", func); |
6540 | 116 endif |
117 if (any (x(2:end) < x(1:end-1))) | |
17058
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
118 error ("%s: X vector values must be in ascending order", func); |
6540 | 119 endif |
120 | |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
121 nbars = columns (y); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
122 |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
123 ## Column width is 1 for 'hist*' styles. Otherwise, same as group width. |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
124 if (nbars == 1) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
125 cwidth = 1; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
126 gwidth = width; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
127 elseif (islogical (histc)) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
128 cwidth = 1; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
129 gwidth = width^2; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
130 else |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
131 cwidth = gwidth = width; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
132 endif |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
133 |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
134 ## Complicated algorithm sizes bars with unitless parameter width. |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
135 ## If width is 1.0, adjacent bars in a group are touching. |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
136 ## Otherwise, bar size is cwidth and the remaining space is split evenly on |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
137 ## either side of the bar. For the default 0.8, spacing is [0.1 0.8 0.1]. |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
138 ## Groups of bars are spaced by gwidth. If gwidth is 1.0 then adjacent |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
139 ## groups will just touch. |
11202
1840a0ecf1fb
__bar__.m: Permit bar() to be called with scalar inputs.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
140 if (numel (x) > 1) |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14388
diff
changeset
|
141 cutoff = min (diff (double (x))) / 2; |
11202
1840a0ecf1fb
__bar__.m: Permit bar() to be called with scalar inputs.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
142 else |
1840a0ecf1fb
__bar__.m: Permit bar() to be called with scalar inputs.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
143 cutoff = 1; |
1840a0ecf1fb
__bar__.m: Permit bar() to be called with scalar inputs.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
144 endif |
6540 | 145 if (group) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
146 gdelta = cutoff * gwidth / nbars; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
147 cdelta = repmat ((1 - ((1 - cwidth) / 2)) * gdelta, size (x)); |
8056
9a6f4713f765
Add area, bar, quiver and stair series graphics objects. Document them
David Bateman <dbateman@free.fr>
parents:
7768
diff
changeset
|
148 else |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
149 cdelta = repmat (cutoff * gwidth, size (x)); |
6540 | 150 endif |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
151 x1 = (x - cdelta)(:)'; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
152 x2 = (x + cdelta)(:)'; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
153 xb = repmat ([x1; x1; x2; x2](:), 1, nbars); |
6540 | 154 |
155 if (group) | |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
156 if (islogical (histc) && histc) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
157 offset = 2*cdelta * [0:(nbars-1)] + cdelta(1); # not centered |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
158 else |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
159 offset = 2*cdelta * [-(nbars - 1) / 2 : (nbars - 1) / 2]; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
160 endif |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
161 |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
162 xb(1:4:4*ngrp,:) += offset + (1-cwidth) / 2 * (2 * gdelta); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
163 xb(2:4:4*ngrp,:) += offset + (1-cwidth) / 2 * (2 * gdelta); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
164 xb(3:4:4*ngrp,:) += offset - (1-cwidth) / 2 * (2 * gdelta); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
165 xb(4:4:4*ngrp,:) += offset - (1-cwidth) / 2 * (2 * gdelta); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
166 |
7325 | 167 y0 = zeros (size (y)) + bv; |
6540 | 168 y1 = y; |
169 else | |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14388
diff
changeset
|
170 y1 = cumsum (y,2); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
171 y0 = [zeros(ngrp,1)+bv, y1(:,1:end-1)]; |
6540 | 172 endif |
173 | |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
174 yb = zeros (4*ngrp, nbars); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
175 yb(1:4:4*ngrp,:) = y0; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
176 yb(2:4:4*ngrp,:) = y1; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
177 yb(3:4:4*ngrp,:) = y1; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
178 yb(4:4:4*ngrp,:) = y0; |
6885 | 179 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
180 xb = reshape (xb, [4, ngrp, nbars]); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
181 yb = reshape (yb, [4, ngrp, nbars]); |
6885 | 182 |
7189 | 183 if (nargout < 2) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
184 oldfig = []; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
185 if (! isempty (hax)) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
186 oldfig = get (0, "currentfigure"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
187 endif |
7215 | 188 unwind_protect |
17058
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
189 hax = newplot (hax); |
7215 | 190 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
191 htmp = bars (hax, vertical, x, y, xb, yb, gwidth, group, |
17058
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
192 have_line_spec, bv, newargs{:}); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
193 |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
194 if (! ishold (hax)) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
195 if (all (x(:,1) == fix (x(:,1)))) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
196 if (vertical) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
197 set (hax, "xtick", x(:,1)); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
198 else |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
199 set (hax, "ytick", x(:,1)); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
200 endif |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
201 endif |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
202 ## Hack prevents color and xlim setting changes when basevalue changes. |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
203 if (vertical) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
204 set (hax, "clim", [0 1], "xlimmode", "manual"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
205 else |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
206 set (hax, "clim", [0 1], "ylimmode", "manual"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
207 endif |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
208 endif |
17058
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
209 unwind_protect_cleanup |
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
210 if (! isempty (oldfig)) |
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
211 set (0, "currentfigure", oldfig); |
7215 | 212 endif |
213 end_unwind_protect | |
17058
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
214 if (nargout == 1) |
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
215 varargout{1} = htmp; |
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
216 endif |
7189 | 217 else |
218 if (vertical) | |
6540 | 219 varargout{1} = xb; |
220 varargout{2} = yb; | |
221 else | |
222 varargout{1} = yb; | |
223 varargout{2} = xb; | |
224 endif | |
6886 | 225 endif |
7191 | 226 |
6540 | 227 endfunction |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
228 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
229 function hglist = bars (hax, vertical, x, y, xb, yb, width, group, have_color_spec, base_value, varargin) |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
230 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
231 nbars = columns (y); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
232 clim = get (hax, "clim"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
233 hglist = []; |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
234 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
235 for i = 1:nbars |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
236 hg = hggroup (); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
237 hglist = [hglist; hg]; |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
238 args = __add_datasource__ ("bar", hg, {"x", "y"}, varargin{:}); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
239 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
240 if (vertical) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
241 if (! have_color_spec) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
242 if (nbars == 1) |
10549 | 243 lev = clim(1); |
244 else | |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
245 lev = (i - 1) * (clim(2) - clim(1)) / (nbars - 1) - clim(1); |
10549 | 246 endif |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
247 h = patch (hax, xb(:,:,i), yb(:,:,i), |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
248 "FaceColor", "flat", "cdata", lev, "parent", hg); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
249 else |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
250 h = patch (hax, xb(:,:,i), yb(:,:,i), "parent", hg); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
251 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
252 else |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
253 if (! have_color_spec) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
254 if (nbars == 1) |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11587
diff
changeset
|
255 lev = clim(1); |
10549 | 256 else |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
257 lev = (i - 1) * (clim(2) - clim(1)) / (nbars - 1) - clim(1); |
10549 | 258 endif |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
259 h = patch (hax, yb(:,:,i), xb(:,:,i), |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
260 "FaceColor", "flat", "cdata", lev, "parent", hg); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
261 else |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
262 h = patch (hax, yb(:,:,i), xb(:,:,i), "parent", hg); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
263 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
264 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
265 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
266 if (i == 1) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
267 ## Add baseline object the first time through loop |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
268 x_axis_range = get (hax, "xlim"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
269 h_baseline = line (hax, x_axis_range, [base_value, base_value], |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
270 "color", [0, 0, 0]); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
271 set (h_baseline, "handlevisibility", "off", "xliminclude", "off"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
272 set (h_baseline, "parent", get (hg, "parent")); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
273 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
274 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
275 ## Setup the hggroup and listeners |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
276 addproperty ("showbaseline", hg, "radio", "{on}|off"); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
277 addproperty ("basevalue", hg, "data", base_value); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
278 addproperty ("baseline", hg, "data", h_baseline); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
279 |
15484
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
280 addlistener (hg, "showbaseline", {@show_baseline, "showbl"}); |
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
281 addlistener (hg, "visible", {@show_baseline, "visib"}); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
282 addlistener (hg, "basevalue", @move_baseline); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
283 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
284 addproperty ("barwidth", hg, "data", width); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
285 if (group) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
286 addproperty ("barlayout", hg, "radio", "stacked|{grouped}", "grouped"); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
287 else |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
288 addproperty ("barlayout", hg, "radio", "{stacked}|grouped", "stacked"); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
289 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
290 if (vertical) |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11587
diff
changeset
|
291 addproperty ("horizontal", hg, "radio", "on|{off}", "off"); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
292 else |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11587
diff
changeset
|
293 addproperty ("horizontal", hg, "radio", "{on}|off", "on"); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
294 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
295 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
296 addlistener (hg, "barwidth", @update_group); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
297 addlistener (hg, "barlayout", @update_group); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
298 addlistener (hg, "horizontal", @update_group); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
299 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
300 addproperty ("edgecolor", hg, "patchedgecolor", get (h, "edgecolor")); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
301 addproperty ("facecolor", hg, "patchfacecolor", get (h, "facecolor")); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
302 addproperty ("linestyle", hg, "patchlinestyle", get (h, "linestyle")); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
303 addproperty ("linewidth", hg, "patchlinewidth", get (h, "linewidth")); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
304 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
305 addlistener (hg, "edgecolor", @update_props); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
306 addlistener (hg, "facecolor", @update_props); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
307 addlistener (hg, "linestyle", @update_props); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
308 addlistener (hg, "linewidth", @update_props); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
309 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
310 if (isvector (x)) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
311 addproperty ("xdata", hg, "data", x); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
312 else |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
313 addproperty ("xdata", hg, "data", x(:, i)); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
314 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
315 addproperty ("ydata", hg, "data", y(:, i)); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
316 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
317 addlistener (hg, "xdata", @update_data); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
318 addlistener (hg, "ydata", @update_data); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
319 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
320 addproperty ("bargroup", hg, "data"); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
321 set (hglist, "bargroup", hglist); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
322 if (! isempty (args)) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
323 set (hg, args{:}); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
324 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
325 endfor |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
326 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
327 update_xlim (hax, []); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
328 ## Add listeners outside of for loop to prevent constant updating during |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
329 ## creation of plot when patch objects are added. |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
330 addlistener (hax, "xlim", @update_xlim); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
331 addlistener (h_baseline, "ydata", @update_baseline); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
332 addlistener (h_baseline, "visible", @update_baseline); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
333 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
334 endfunction |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
335 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
336 function update_xlim (h, ~) |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
337 kids = get (h, "children"); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
338 xlim = get (h, "xlim"); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
339 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
340 for i = 1 : length (kids) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
341 obj = get (kids(i)); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
342 if (strcmp (obj.type, "hggroup") && isfield (obj, "baseline")) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
343 if (any (get (obj.baseline, "xdata") != xlim)) |
10549 | 344 set (obj.baseline, "xdata", xlim); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
345 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
346 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
347 endfor |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
348 endfunction |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
349 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
350 function update_baseline (h, ~) |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
351 visible = get (h, "visible"); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
352 ydata = get (h, "ydata")(1); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
353 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
354 ## Search axis for a bargroup that contains this baseline handle |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
355 kids = get (get (h, "parent"), "children"); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
356 for i = 1 : length (kids) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
357 obj = get (kids(i)); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
358 if (strcmp (obj.type, "hggroup") && isfield (obj, "baseline") |
10549 | 359 && obj.baseline == h) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
360 set (obj.bargroup, "showbaseline", visible, "basevalue", ydata); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
361 break; |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
362 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
363 endfor |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
364 endfunction |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
365 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
366 function show_baseline (h, ~, prop = "") |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
367 persistent recursion = false; |
15484
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
368 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
369 ## Don't allow recursion |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
370 if (! recursion) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
371 unwind_protect |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
372 recursion = true; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
373 hlist = get (h, "bargroup"); |
15484
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
374 if (strcmp (prop, "showbl")) |
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
375 showbaseline = get (h, "showbaseline"); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
376 hlist = hlist(hlist != h); # remove current handle being updated |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
377 set (hlist, "showbaseline", showbaseline); |
15484
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
378 elseif (strcmp (prop, "visib")) |
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
379 showbaseline = "on"; |
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
380 if (all (strcmp (get (hlist, "visible"), "off"))) |
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
381 showbaseline = "off"; |
10549 | 382 endif |
15484
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
383 endif |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
384 set (get (h, "baseline"), "visible", showbaseline); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
385 unwind_protect_cleanup |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
386 recursion = false; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
387 end_unwind_protect |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
388 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
389 endfunction |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
390 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
391 function move_baseline (h, ~) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
392 persistent recursion = false; |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
393 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
394 ## Don't allow recursion |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
395 if (! recursion) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
396 recursion = true; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
397 unwind_protect |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
398 b0 = get (h, "basevalue"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
399 bl = get (h, "baseline"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
400 set (bl, "ydata", [b0, b0]); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
401 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
402 if (strcmp (get (h, "barlayout"), "grouped")) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
403 update_data (h); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
404 endif |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
405 unwind_protect_cleanup |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
406 recursion = false; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
407 end_unwind_protect |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
408 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
409 endfunction |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
410 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
411 function update_props (h, ~) |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
412 kids = get (h, "children"); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
413 set (kids, {"edgecolor", "linewidth", "linestyle", "facecolor"}, |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
414 get (h, {"edgecolor", "linewidth", "linestyle", "facecolor"})); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
415 endfunction |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
416 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
417 function update_data (h, ~) |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
418 persistent recursion = false; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
419 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
420 ## Don't allow recursion |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
421 if (! recursion) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
422 unwind_protect |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
423 recursion = true; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
424 hlist = get (h, "bargroup"); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
425 x = get (h, "xdata"); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
426 if (! isvector (x)) |
10549 | 427 x = x(:); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
428 endif |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
429 ydat = get (hlist, "ydata"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
430 if (iscell (ydat)) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
431 y = cell2mat (ydat.'); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
432 else |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
433 y = ydat; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
434 endif |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
435 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
436 [xb, yb] = bar (x, y, get (h, "barwidth"), get (h, "barlayout"), |
10549 | 437 "basevalue", get (h, "basevalue")); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
438 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
439 vertical = strcmp (get (h, "horizontal"), "off"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
440 for i = 1:columns (y) |
10549 | 441 hp = get (hlist(i), "children"); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
442 if (vertical) |
10549 | 443 set (hp, "xdata", xb(:,:,i), "ydata", yb(:,:,i)); |
444 else | |
445 set (hp, "xdata", yb(:,:,i), "ydata", xb(:,:,i)); | |
446 endif | |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
447 endfor |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
448 unwind_protect_cleanup |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
449 recursion = false; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
450 end_unwind_protect |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
451 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
452 endfunction |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
453 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
454 function update_group (h, ~) |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
455 persistent recursion = false; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
456 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
457 ## Don't allow recursion |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
458 if (! recursion) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
459 unwind_protect |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
460 recursion = true; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
461 hlist = get (h, "bargroup"); |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14388
diff
changeset
|
462 barwidth = get (h, "barwidth"); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
463 barlayout = get (h, "barlayout"); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
464 horizontal = get (h, "horizontal"); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
465 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
466 hlist = hlist(hlist != h); # remove current handle being updated |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
467 set (hlist, "barwidth", barwidth, "barlayout", barlayout, |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
468 "horizontal", horizontal); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
469 update_data (h); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
470 unwind_protect_cleanup |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
471 recursion = false; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
472 end_unwind_protect |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
473 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
474 endfunction |
17058
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
475 |