Mercurial > octave
annotate scripts/plot/draw/private/__bar__.m @ 27918:b442ec6dda5c
use centralized file for copyright info for individual contributors
* COPYRIGHT.md: New file.
* In most other files, use "Copyright (C) YYYY-YYYY The Octave Project
Developers" instead of tracking individual names in separate source
files. The motivation is to reduce the effort required to update the
notices each year.
Until now, the Octave source files contained copyright notices that
list individual contributors. I adopted these file-scope copyright
notices because that is what everyone was doing 30 years ago in the
days before distributed version control systems. But now, with many
contributors and modern version control systems, having these
file-scope copyright notices causes trouble when we update copyright
years or refactor code.
Over time, the file-scope copyright notices may become outdated as new
contributions are made or code is moved from one file to
another. Sometimes people contribute significant patches but do not
add a line claiming copyright. Other times, people add a copyright
notice for their contribution but then a later refactoring moves part
or all of their contribution to another file and the notice is not
moved with the code. As a practical matter, moving such notices is
difficult -- determining what parts are due to a particular
contributor requires a time-consuming search through the project
history. Even managing the yearly update of copyright years is
problematic. We have some contributors who are no longer
living. Should we update the copyright dates for their contributions
when we release new versions? Probably not, but we do still want to
claim copyright for the project as a whole.
To minimize the difficulty of maintaining the copyright notices, I
would like to change Octave's sources to use what is described here:
https://softwarefreedom.org/resources/2012/ManagingCopyrightInformation.html
in the section "Maintaining centralized copyright notices":
The centralized notice approach consolidates all copyright
notices in a single location, usually a top-level file.
This file should contain all of the copyright notices
provided project contributors, unless the contribution was
clearly insignificant. It may also credit -- without a copyright
notice -- anyone who helped with the project but did not
contribute code or other copyrighted material.
This approach captures less information about contributions
within individual files, recognizing that the DVCS is better
equipped to record those details. As we mentioned before, it
does have one disadvantage as compared to the file-scope
approach: if a single file is separated from the distribution,
the recipient won't see the contributors' copyright notices.
But this can be easily remedied by including a single
copyright notice in each file's header, pointing to the
top-level file:
Copyright YYYY-YYYY The Octave Project Developers
See the COPYRIGHT file at the top-level directory
of this distribution or at https://octave.org/COPYRIGHT.html.
followed by the usual GPL copyright statement.
For more background, see the discussion here:
https://lists.gnu.org/archive/html/octave-maintainers/2020-01/msg00009.html
Most files in the following directories have been skipped intentinally
in this changeset:
doc
libgui/qterminal
liboctave/external
m4
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 06 Jan 2020 15:38:17 -0500 |
parents | 4d6d21839dfd |
children | 1891570abac8 |
rev | line source |
---|---|
27918
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27898
diff
changeset
|
1 ## Copyright (C) 1996-2019 The Octave Project Developers |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27898
diff
changeset
|
2 ## |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27898
diff
changeset
|
3 ## See the file COPYRIGHT.md in the top-level directory of this distribution |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27898
diff
changeset
|
4 ## or <https://octave.org/COPYRIGHT.html/>. |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27898
diff
changeset
|
5 ## |
6540 | 6 ## |
7 ## This file is part of Octave. | |
8 ## | |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24145
diff
changeset
|
9 ## Octave is free software: you can redistribute it and/or modify it |
6540 | 10 ## under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24145
diff
changeset
|
11 ## the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22488
diff
changeset
|
12 ## (at your option) any later version. |
6540 | 13 ## |
14 ## Octave is distributed in the hope that it will be useful, but | |
15 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22488
diff
changeset
|
16 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22488
diff
changeset
|
17 ## GNU General Public License for more details. |
6540 | 18 ## |
19 ## You should have received a copy of the GNU General Public License | |
7016 | 20 ## along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24145
diff
changeset
|
21 ## <https://www.gnu.org/licenses/>. |
6540 | 22 |
8812
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8664
diff
changeset
|
23 ## -*- texinfo -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
24 ## @deftypefn {} {} __bar__ (@var{vertical}, @var{func}, @dots{}) |
6895 | 25 ## Undocumented internal function. |
8812
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8664
diff
changeset
|
26 ## @end deftypefn |
6540 | 27 |
28 function varargout = __bar__ (vertical, func, varargin) | |
6886 | 29 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
30 [hax, varargin, nargin] = __plt_get_axis_arg__ (func, varargin{:}); |
7189 | 31 |
24145
196ea1ee99b8
Revamp input validation for bar functions (bug #52135).
Rik <rik@octave.org>
parents:
23947
diff
changeset
|
32 if (! isnumeric (varargin{1})) |
196ea1ee99b8
Revamp input validation for bar functions (bug #52135).
Rik <rik@octave.org>
parents:
23947
diff
changeset
|
33 error ("%s: Y must be numeric", func); |
196ea1ee99b8
Revamp input validation for bar functions (bug #52135).
Rik <rik@octave.org>
parents:
23947
diff
changeset
|
34 endif |
196ea1ee99b8
Revamp input validation for bar functions (bug #52135).
Rik <rik@octave.org>
parents:
23947
diff
changeset
|
35 |
22488
a666e3ee6af8
Require gnuplot 4.4 as mininimum supported version.
Rik <rik@octave.org>
parents:
22367
diff
changeset
|
36 width = 0.8; |
6540 | 37 group = true; |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
38 histc = NA; |
22930
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
39 ## BaseValue |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
40 if (strcmp (get (hax, "yscale"), "log")) |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
41 bv = 1; |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
42 else |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
43 bv = 0; |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
44 endif |
6540 | 45 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
46 if (nargin > 1 && isnumeric (varargin{2})) |
6540 | 47 x = varargin{1}; |
6886 | 48 if (isvector (x)) |
6540 | 49 x = x(:); |
50 endif | |
51 y = varargin{2}; | |
6886 | 52 if (isvector (y)) |
6540 | 53 y = y(:); |
54 endif | |
24145
196ea1ee99b8
Revamp input validation for bar functions (bug #52135).
Rik <rik@octave.org>
parents:
23947
diff
changeset
|
55 if (isscalar (y) && ! isscalar (x)) |
196ea1ee99b8
Revamp input validation for bar functions (bug #52135).
Rik <rik@octave.org>
parents:
23947
diff
changeset
|
56 ## "y" is actually "width" argument |
196ea1ee99b8
Revamp input validation for bar functions (bug #52135).
Rik <rik@octave.org>
parents:
23947
diff
changeset
|
57 y = x; |
14872
c2dbdeaa25df
maint: use rows() and columns() to clarify m-files.
Rik <octave@nomad.inbox5.com>
parents:
14868
diff
changeset
|
58 x = [1:rows(y)]'; |
6540 | 59 idx = 2; |
60 else | |
6886 | 61 if (! isvector (x)) |
17058
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
62 error ("%s: X must be a vector", func); |
24145
196ea1ee99b8
Revamp input validation for bar functions (bug #52135).
Rik <rik@octave.org>
parents:
23947
diff
changeset
|
63 elseif (numel (unique (x)) != numel (x)) |
196ea1ee99b8
Revamp input validation for bar functions (bug #52135).
Rik <rik@octave.org>
parents:
23947
diff
changeset
|
64 error ("%s: X vector values must be unique", func); |
6540 | 65 endif |
66 idx = 3; | |
67 endif | |
68 else | |
69 y = varargin{1}; | |
6886 | 70 if (isvector (y)) |
6540 | 71 y = y(:); |
72 endif | |
14872
c2dbdeaa25df
maint: use rows() and columns() to clarify m-files.
Rik <octave@nomad.inbox5.com>
parents:
14868
diff
changeset
|
73 x = [1:rows(y)]'; |
6540 | 74 idx = 2; |
75 endif | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
76 |
6540 | 77 newargs = {}; |
6886 | 78 have_line_spec = false; |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
79 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
|
80 if (ischar (varargin{idx}) && strcmpi (varargin{idx}, "grouped")) |
6540 | 81 group = true; |
20735
418ae0cb752f
Replace ++,-- with in-place operators for performance.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
82 idx += 1; |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8056
diff
changeset
|
83 elseif (ischar (varargin{idx}) && strcmpi (varargin{idx}, "stacked")) |
6540 | 84 group = false; |
20735
418ae0cb752f
Replace ++,-- with in-place operators for performance.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
85 idx += 1; |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
86 elseif (ischar (varargin{idx}) && strcmpi (varargin{idx}, "histc")) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
87 group = true; |
19593
446c46af4b42
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19284
diff
changeset
|
88 histc = true; |
20735
418ae0cb752f
Replace ++,-- with in-place operators for performance.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
89 idx += 1; |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
90 elseif (ischar (varargin{idx}) && strcmpi (varargin{idx}, "hist")) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
91 group = true; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
92 histc = false; |
20735
418ae0cb752f
Replace ++,-- with in-place operators for performance.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
93 idx += 1; |
6540 | 94 else |
17462
177147bf7b55
Overhaul use of __pltopt__.m to correctly check for cellstr, not just cell.
Rik <rik@octave.org>
parents:
17301
diff
changeset
|
95 if ((ischar (varargin{idx}) || iscellstr (varargin{idx})) |
10549 | 96 && ! have_line_spec) |
97 [linespec, valid] = __pltopt__ (func, varargin{idx}, false); | |
98 if (valid) | |
99 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
|
100 ## 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
|
101 ## 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
|
102 newargs = [{"facecolor", linespec.color}, newargs] ; |
20735
418ae0cb752f
Replace ++,-- with in-place operators for performance.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
103 idx += 1; |
10549 | 104 continue; |
105 endif | |
6540 | 106 endif |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14388
diff
changeset
|
107 if (isscalar (varargin{idx})) |
10549 | 108 width = varargin{idx++}; |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
109 elseif (idx == nargin) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
110 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
|
111 elseif (ischar (varargin{idx}) |
10549 | 112 && strcmpi (varargin{idx}, "basevalue") |
113 && isscalar (varargin{idx+1})) | |
7325 | 114 bv = varargin{idx+1}; |
115 idx += 2; | |
6540 | 116 else |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
117 newargs = [newargs, varargin(idx:idx+1)]; |
10549 | 118 idx += 2; |
6540 | 119 endif |
120 endif | |
121 endwhile | |
122 | |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
123 ngrp = rows (x); |
24145
196ea1ee99b8
Revamp input validation for bar functions (bug #52135).
Rik <rik@octave.org>
parents:
23947
diff
changeset
|
124 |
196ea1ee99b8
Revamp input validation for bar functions (bug #52135).
Rik <rik@octave.org>
parents:
23947
diff
changeset
|
125 if (isvector (y) && ngrp != rows (y)) |
196ea1ee99b8
Revamp input validation for bar functions (bug #52135).
Rik <rik@octave.org>
parents:
23947
diff
changeset
|
126 y = y.'; |
196ea1ee99b8
Revamp input validation for bar functions (bug #52135).
Rik <rik@octave.org>
parents:
23947
diff
changeset
|
127 endif |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
128 if (ngrp != rows (y)) |
17058
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
129 error ("%s: length of X and Y must be equal", func); |
6540 | 130 endif |
131 | |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
132 nbars = columns (y); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
133 |
18776
d99475e26c78
Fix regression in width of bars for hist() (bug #42401).
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
134 ## Column width is 1 for 'hist*' styles (bars touch). |
d99475e26c78
Fix regression in width of bars for hist() (bug #42401).
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
135 if (islogical (histc)) |
d99475e26c78
Fix regression in width of bars for hist() (bug #42401).
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
136 cwidth = 1; |
d99475e26c78
Fix regression in width of bars for hist() (bug #42401).
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
137 if (nbars == 1) |
d99475e26c78
Fix regression in width of bars for hist() (bug #42401).
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
138 gwidth = 1; |
d99475e26c78
Fix regression in width of bars for hist() (bug #42401).
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
139 else |
d99475e26c78
Fix regression in width of bars for hist() (bug #42401).
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
140 gwidth = width^2; |
d99475e26c78
Fix regression in width of bars for hist() (bug #42401).
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
141 endif |
d99475e26c78
Fix regression in width of bars for hist() (bug #42401).
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
142 elseif (nbars == 1) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
143 cwidth = 1; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
144 gwidth = width; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
145 else |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
146 cwidth = gwidth = width; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
147 endif |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
148 |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
149 ## Complicated algorithm sizes bars with unitless parameter width. |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
150 ## 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
|
151 ## 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
|
152 ## 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
|
153 ## 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
|
154 ## 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
|
155 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
|
156 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
|
157 else |
1840a0ecf1fb
__bar__.m: Permit bar() to be called with scalar inputs.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
158 cutoff = 1; |
1840a0ecf1fb
__bar__.m: Permit bar() to be called with scalar inputs.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
159 endif |
6540 | 160 if (group) |
19593
446c46af4b42
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19284
diff
changeset
|
161 gdelta = cutoff * gwidth / nbars; |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
162 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
|
163 else |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
164 cdelta = repmat (cutoff * gwidth, size (x)); |
6540 | 165 endif |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
166 x1 = (x - cdelta)(:)'; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
167 x2 = (x + cdelta)(:)'; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
168 xb = repmat ([x1; x1; x2; x2](:), 1, nbars); |
6540 | 169 |
170 if (group) | |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
171 if (islogical (histc) && histc) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
172 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
|
173 else |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
174 offset = 2*cdelta * [-(nbars - 1) / 2 : (nbars - 1) / 2]; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
175 endif |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
176 |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
177 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
|
178 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
|
179 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
|
180 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
|
181 |
7325 | 182 y0 = zeros (size (y)) + bv; |
6540 | 183 y1 = y; |
184 else | |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14388
diff
changeset
|
185 y1 = cumsum (y,2); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
186 y0 = [zeros(ngrp,1)+bv, y1(:,1:end-1)]; |
6540 | 187 endif |
188 | |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
189 yb = zeros (4*ngrp, nbars); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
190 yb(1:4:4*ngrp,:) = y0; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
191 yb(2:4:4*ngrp,:) = y1; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
192 yb(3:4:4*ngrp,:) = y1; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
193 yb(4:4:4*ngrp,:) = y0; |
6885 | 194 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
195 xb = reshape (xb, [4, ngrp, nbars]); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
196 yb = reshape (yb, [4, ngrp, nbars]); |
6885 | 197 |
7189 | 198 if (nargout < 2) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
199 oldfig = []; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
200 if (! isempty (hax)) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
201 oldfig = get (0, "currentfigure"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
202 endif |
7215 | 203 unwind_protect |
17058
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
204 hax = newplot (hax); |
7215 | 205 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
206 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
|
207 have_line_spec, bv, newargs{:}); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
208 |
22367
459545bc9019
Use ishold () rather than ishold (hax) for performance.
Rik <rik@octave.org>
parents:
22366
diff
changeset
|
209 if (! ishold ()) |
23947
d837f7f6e4aa
Don't label all values on bar plot when there are more than 15 bars (bug #51773).
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
210 if (numel (x(:,1)) <= 15 && all (x(:,1) == fix (x(:,1)))) |
d837f7f6e4aa
Don't label all values on bar plot when there are more than 15 bars (bug #51773).
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
211 ## Set manual ticks, rather than relying on autoselection, |
d837f7f6e4aa
Don't label all values on bar plot when there are more than 15 bars (bug #51773).
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
212 ## when ticks are a small number of integers. |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
213 if (vertical) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
214 set (hax, "xtick", x(:,1)); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
215 else |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
216 set (hax, "ytick", x(:,1)); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
217 endif |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
218 endif |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
219 ## 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
|
220 if (vertical) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
221 set (hax, "clim", [0 1], "xlimmode", "manual"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
222 else |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
223 set (hax, "clim", [0 1], "ylimmode", "manual"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
224 endif |
26548
58ad6355ece8
Enable axes ticks on top of bars of bar plots for Matlab compatiblity (bug #55481).
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
225 set (hax, "box", "on", "layer", "top"); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
226 endif |
17058
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
227 unwind_protect_cleanup |
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
228 if (! isempty (oldfig)) |
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
229 set (0, "currentfigure", oldfig); |
7215 | 230 endif |
231 end_unwind_protect | |
17058
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
232 if (nargout == 1) |
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
233 varargout{1} = htmp; |
95c6cada5067
__bar__.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
17032
diff
changeset
|
234 endif |
7189 | 235 else |
236 if (vertical) | |
6540 | 237 varargout{1} = xb; |
238 varargout{2} = yb; | |
239 else | |
240 varargout{1} = yb; | |
241 varargout{2} = xb; | |
242 endif | |
6886 | 243 endif |
7191 | 244 |
6540 | 245 endfunction |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
246 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
247 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
|
248 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
249 nbars = columns (y); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
250 clim = get (hax, "clim"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
251 hglist = []; |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
252 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
253 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
|
254 hg = hggroup (); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
255 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
|
256 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
|
257 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
258 if (vertical) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
259 if (! have_color_spec) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
260 if (nbars == 1) |
10549 | 261 lev = clim(1); |
262 else | |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
263 lev = (i - 1) * (clim(2) - clim(1)) / (nbars - 1) - clim(1); |
10549 | 264 endif |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
265 h = patch (hax, xb(:,:,i), yb(:,:,i), |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
266 "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
|
267 else |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
268 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
|
269 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
270 else |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
271 if (! have_color_spec) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
272 if (nbars == 1) |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11587
diff
changeset
|
273 lev = clim(1); |
10549 | 274 else |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
275 lev = (i - 1) * (clim(2) - clim(1)) / (nbars - 1) - clim(1); |
10549 | 276 endif |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
277 h = patch (hax, yb(:,:,i), xb(:,:,i), |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
278 "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
|
279 else |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
280 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
|
281 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
282 endif |
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 if (i == 1) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
285 ## Add baseline object the first time through loop |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
286 x_axis_range = get (hax, "xlim"); |
26217
31267a10f8a9
Use __go_line__ directly in plot scripts for performance.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
287 h_baseline = __go_line__ (hax, "xdata", x_axis_range, |
31267a10f8a9
Use __go_line__ directly in plot scripts for performance.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
288 "ydata", [base_value, base_value], |
31267a10f8a9
Use __go_line__ directly in plot scripts for performance.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
289 "color", [0, 0, 0]); |
27106
6bfd3a890185
Consolidate separate calls to set() in to one call for interpreter efficiency.
Rik <rik@octave.org>
parents:
26548
diff
changeset
|
290 set (h_baseline, "handlevisibility", "off", "xliminclude", "off", |
6bfd3a890185
Consolidate separate calls to set() in to one call for interpreter efficiency.
Rik <rik@octave.org>
parents:
26548
diff
changeset
|
291 "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
|
292 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
293 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
294 ## 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
|
295 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
|
296 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
|
297 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
|
298 |
15484
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
299 addlistener (hg, "showbaseline", {@show_baseline, "showbl"}); |
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
300 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
|
301 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
|
302 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
303 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
|
304 if (group) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
305 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
|
306 else |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
307 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
|
308 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
309 if (vertical) |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11587
diff
changeset
|
310 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
|
311 else |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11587
diff
changeset
|
312 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
|
313 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
314 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
315 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
|
316 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
|
317 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
|
318 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
319 addproperty ("edgecolor", hg, "patchedgecolor", get (h, "edgecolor")); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
320 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
|
321 addproperty ("linestyle", hg, "patchlinestyle", get (h, "linestyle")); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
322 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
|
323 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
324 addlistener (hg, "edgecolor", @update_props); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
325 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
|
326 addlistener (hg, "linestyle", @update_props); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
327 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
|
328 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
329 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
|
330 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
|
331 else |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
332 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
|
333 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
334 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
|
335 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
336 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
|
337 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
|
338 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
339 addproperty ("bargroup", hg, "data"); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
340 set (hglist, "bargroup", hglist); |
17527
76614e624818
Add "HitTestArea" property to certain hggroups for Matlab compatibility
Rik <rik@octave.org>
parents:
17519
diff
changeset
|
341 |
76614e624818
Add "HitTestArea" property to certain hggroups for Matlab compatibility
Rik <rik@octave.org>
parents:
17519
diff
changeset
|
342 ## Matlab property, although Octave does not implement it. |
76614e624818
Add "HitTestArea" property to certain hggroups for Matlab compatibility
Rik <rik@octave.org>
parents:
17519
diff
changeset
|
343 addproperty ("hittestarea", hg, "radio", "on|{off}", "off"); |
76614e624818
Add "HitTestArea" property to certain hggroups for Matlab compatibility
Rik <rik@octave.org>
parents:
17519
diff
changeset
|
344 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
345 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
|
346 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
|
347 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
348 endfor |
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 update_xlim (hax, []); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
351 ## 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
|
352 ## creation of plot when patch objects are added. |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
353 addlistener (hax, "xlim", @update_xlim); |
22930
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
354 addlistener (hax, "yscale", {@update_basevalue_logscale, hg}); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
355 addlistener (h_baseline, "ydata", @update_baseline); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
356 addlistener (h_baseline, "visible", @update_baseline); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
357 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
358 endfunction |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
359 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
360 function update_xlim (h, ~) |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
361 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
362 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
|
363 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
|
364 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
365 for i = 1 : length (kids) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
366 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
|
367 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
|
368 if (any (get (obj.baseline, "xdata") != xlim)) |
10549 | 369 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
|
370 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
371 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
372 endfor |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
373 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
374 endfunction |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
375 |
22930
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
376 function update_basevalue_logscale (hax, ~, hg) |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
377 if (strcmp (get (hax, "yscale"), "log")) |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
378 warning ("off", "Octave:negative-data-log-axis", "local"); |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
379 if (get (hg, "basevalue") == 0) |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
380 set (hg, "basevalue", 1); |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
381 endif |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
382 else |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
383 if (get (hg, "basevalue") == 1) |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
384 set (hg, "basevalue", 0); |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
385 endif |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
386 endif |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
387 endfunction |
f2d2edab5c66
Change basevalue of bar charts when axes scale changed to log (bug #41944).
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
388 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
389 function update_baseline (h, ~) |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
390 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
391 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
|
392 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
|
393 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
394 ## 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
|
395 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
|
396 for i = 1 : length (kids) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
397 obj = get (kids(i)); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
398 if (strcmp (obj.type, "hggroup") && isfield (obj, "baseline") |
10549 | 399 && obj.baseline == h) |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
400 set (obj.bargroup, "showbaseline", visible, "basevalue", ydata); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
401 break; |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
402 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
403 endfor |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
404 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
405 endfunction |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
406 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
407 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
|
408 persistent recursion = false; |
19593
446c46af4b42
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19284
diff
changeset
|
409 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
410 ## 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
|
411 if (! recursion) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
412 unwind_protect |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
413 recursion = true; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
414 hlist = get (h, "bargroup"); |
15484
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
415 if (strcmp (prop, "showbl")) |
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
416 showbaseline = get (h, "showbaseline"); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
417 hlist = hlist(hlist != h); # remove current handle being updated |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
418 set (hlist, "showbaseline", showbaseline); |
15484
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
419 elseif (strcmp (prop, "visib")) |
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
420 showbaseline = "on"; |
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
421 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
|
422 showbaseline = "off"; |
10549 | 423 endif |
15484
0133339a51c3
hide baseline when bar group is made invisible
Pantxo <pantxo.diribarne@gmail.com>
parents:
15483
diff
changeset
|
424 endif |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
425 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
|
426 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
|
427 recursion = false; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
428 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
|
429 endif |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
430 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
431 endfunction |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
432 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
433 function move_baseline (h, ~) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
434 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
|
435 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
436 ## Don't allow recursion |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
437 if (! recursion) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
438 recursion = true; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
439 unwind_protect |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
440 b0 = get (h, "basevalue"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
441 bl = get (h, "baseline"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
442 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
|
443 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
444 if (strcmp (get (h, "barlayout"), "grouped")) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
445 update_data (h); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
446 endif |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
447 unwind_protect_cleanup |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
448 recursion = false; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
449 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
|
450 endif |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
451 |
9896
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_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
|
455 kids = get (h, "children"); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
456 set (kids, {"edgecolor", "linewidth", "linestyle", "facecolor"}, |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
457 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
|
458 endfunction |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
459 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
460 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
|
461 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
|
462 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
463 ## 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
|
464 if (! recursion) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
465 unwind_protect |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
466 recursion = true; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
467 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
|
468 x = get (h, "xdata"); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
469 if (! isvector (x)) |
10549 | 470 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
|
471 endif |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
472 ydat = get (hlist, "ydata"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
473 if (iscell (ydat)) |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
474 y = cell2mat (ydat.'); |
19284
f96495e88a70
Allow setting horizontal vector of "ydata" in bar plots (bug #43468).
Rik <rik@octave.org>
parents:
18776
diff
changeset
|
475 elseif (isvector (ydat)) |
f96495e88a70
Allow setting horizontal vector of "ydata" in bar plots (bug #43468).
Rik <rik@octave.org>
parents:
18776
diff
changeset
|
476 y = ydat(:); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
477 else |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
478 y = ydat; |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
479 endif |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
480 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
481 [xb, yb] = bar (x, y, get (h, "barwidth"), get (h, "barlayout"), |
10549 | 482 "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
|
483 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
484 vertical = strcmp (get (h, "horizontal"), "off"); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
485 for i = 1:columns (y) |
10549 | 486 hp = get (hlist(i), "children"); |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
487 if (vertical) |
10549 | 488 set (hp, "xdata", xb(:,:,i), "ydata", yb(:,:,i)); |
489 else | |
490 set (hp, "xdata", yb(:,:,i), "ydata", xb(:,:,i)); | |
491 endif | |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
492 endfor |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
493 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
|
494 recursion = false; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
495 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
|
496 endif |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
497 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
498 endfunction |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
499 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
500 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
|
501 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
|
502 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
503 ## 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
|
504 if (! recursion) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
505 unwind_protect |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
506 recursion = true; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
507 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
|
508 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
|
509 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
|
510 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
|
511 |
17519
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
512 hlist = hlist(hlist != h); # remove current handle being updated |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
513 set (hlist, "barwidth", barwidth, "barlayout", barlayout, |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
514 "horizontal", horizontal); |
cc9befe5d271
Overhaul bar family of plot functions.
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
515 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
|
516 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
|
517 recursion = false; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
518 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
|
519 endif |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
520 |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
521 endfunction |