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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
6 ##
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
7 ## This file is part of Octave.
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
13 ##
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
14 ## Octave is distributed in the hope that it will be useful, but
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
18 ##
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
19 ## You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6895
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
76e3d985ae56 [project @ 2007-09-13 18:22:38 by jwe]
jwe
parents: 6886
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
27
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
28 function varargout = __bar__ (vertical, func, varargin)
6886
1c1d62569590 [project @ 2007-09-10 20:58:34 by jwe]
jwe
parents: 6885
diff changeset
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
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7148
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
47 x = varargin{1};
6886
1c1d62569590 [project @ 2007-09-10 20:58:34 by jwe]
jwe
parents: 6885
diff changeset
48 if (isvector (x))
6540
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
49 x = x(:);
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
50 endif
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
51 y = varargin{2};
6886
1c1d62569590 [project @ 2007-09-10 20:58:34 by jwe]
jwe
parents: 6885
diff changeset
52 if (isvector (y))
6540
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
53 y = y(:);
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
59 idx = 2;
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
60 else
6886
1c1d62569590 [project @ 2007-09-10 20:58:34 by jwe]
jwe
parents: 6885
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
65 endif
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
66 idx = 3;
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
67 endif
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
68 else
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
69 y = varargin{1};
6886
1c1d62569590 [project @ 2007-09-10 20:58:34 by jwe]
jwe
parents: 6885
diff changeset
70 if (isvector (y))
6540
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
71 y = y(:);
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
74 idx = 2;
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
75 endif
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
76
6540
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
77 newargs = {};
6886
1c1d62569590 [project @ 2007-09-10 20:58:34 by jwe]
jwe
parents: 6885
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
96 && ! have_line_spec)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
97 [linespec, valid] = __pltopt__ (func, varargin{idx}, false);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
98 if (valid)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
104 continue;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
105 endif
6540
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
112 && strcmpi (varargin{idx}, "basevalue")
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
113 && isscalar (varargin{idx+1}))
7325
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents: 7215
diff changeset
114 bv = varargin{idx+1};
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents: 7215
diff changeset
115 idx += 2;
6540
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
118 idx += 2;
6540
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
119 endif
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
120 endif
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
121 endwhile
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
130 endif
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
169
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
67aef14de9c2 [project @ 2007-12-19 20:21:11 by jwe]
jwe
parents: 7215
diff changeset
182 y0 = zeros (size (y)) + bv;
6540
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
183 y1 = y;
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
187 endif
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
987a7bf45c99 [project @ 2007-09-10 20:51:09 by jwe]
jwe
parents: 6633
diff changeset
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
987a7bf45c99 [project @ 2007-09-10 20:51:09 by jwe]
jwe
parents: 6633
diff changeset
197
7189
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7148
diff changeset
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
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7208
diff changeset
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
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7208
diff changeset
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
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7208
diff changeset
230 endif
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7208
diff changeset
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
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7148
diff changeset
235 else
e8d953d03f6a [project @ 2007-11-26 20:42:09 by dbateman]
dbateman
parents: 7148
diff changeset
236 if (vertical)
6540
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
237 varargout{1} = xb;
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
238 varargout{2} = yb;
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
239 else
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
240 varargout{1} = yb;
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
241 varargout{2} = xb;
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
242 endif
6886
1c1d62569590 [project @ 2007-09-10 20:58:34 by jwe]
jwe
parents: 6885
diff changeset
243 endif
7191
b48a21816f2e [project @ 2007-11-26 21:24:32 by jwe]
jwe
parents: 7189
diff changeset
244
6540
9dcfc78da664 [project @ 2007-04-18 21:16:08 by dbateman]
dbateman
parents:
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
261 lev = clim(1);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
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
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
488 set (hp, "xdata", xb(:,:,i), "ydata", yb(:,:,i));
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
489 else
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
490 set (hp, "xdata", yb(:,:,i), "ydata", xb(:,:,i));
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9896
diff changeset
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