Mercurial > octave
annotate scripts/plot/draw/private/__scatter__.m @ 21758:ffad2baa90f7
maint: Use newlines to make code more readable.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 20 May 2016 15:46:45 -0700 |
parents | d7a268e68e69 |
children | bac0d6f07a3e |
rev | line source |
---|---|
19697
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
19597
diff
changeset
|
1 ## Copyright (C) 2007-2015 David Bateman |
7189 | 2 ## |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7 ## the Free Software Foundation; either version 3 of the License, or (at | |
8 ## your option) any later version. | |
9 ## | |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
16 ## along with Octave; see the file COPYING. If not, see | |
17 ## <http://www.gnu.org/licenses/>. | |
18 | |
8812
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8257
diff
changeset
|
19 ## -*- texinfo -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20735
diff
changeset
|
20 ## @deftypefn {} {@var{hg} =} __scatter__ (@dots{}) |
7189 | 21 ## Undocumented internal function. |
8812
7d48766c21a5
use consistent format for doc strings of internal functions
John W. Eaton <jwe@octave.org>
parents:
8257
diff
changeset
|
22 ## @end deftypefn |
7189 | 23 |
8257 | 24 function hg = __scatter__ (varargin) |
7191 | 25 |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
26 hax = varargin{1}; # We don't do anything with this. Could remove it. |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
27 nd = varargin{2}; |
7191 | 28 fcn = varargin{3}; |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
29 x = varargin{4}(:); |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
30 y = varargin{5}(:); |
7191 | 31 |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
32 if (nd == 2) |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
33 istart = 6; |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
34 else |
7191 | 35 z = varargin{6}(:); |
7189 | 36 istart = 7; |
37 endif | |
38 | |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
39 if (istart <= nargin) |
17407
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
40 s = varargin{istart}(:); |
10697
1215ab6f3491
Honor Matlab color settings for scatter().
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
41 if (isempty (s) || ischar (s)) |
7603
689652eb95d1
fix for scatter markersize
David Bateman <dbateman@free.fr>
parents:
7421
diff
changeset
|
42 s = 6; |
10701
657e63dcfd88
scatter.m: Properly set default value markersize and marker type.
Ben Abbott <bpabbott@mac.com>
parents:
10697
diff
changeset
|
43 endif |
657e63dcfd88
scatter.m: Properly set default value markersize and marker type.
Ben Abbott <bpabbott@mac.com>
parents:
10697
diff
changeset
|
44 if (! ischar (varargin{istart})) |
20735
418ae0cb752f
Replace ++,-- with in-place operators for performance.
Rik <rik@octave.org>
parents:
20400
diff
changeset
|
45 istart += 1; |
7189 | 46 endif |
47 else | |
7603
689652eb95d1
fix for scatter markersize
David Bateman <dbateman@free.fr>
parents:
7421
diff
changeset
|
48 s = 6; |
7189 | 49 endif |
50 | |
17407
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
51 ## Remove NaNs |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
52 idx = isnan (x) | isnan (y) | isnan (s); |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
53 if (nd == 3) |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
54 idx |= isnan (z); |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
55 z(idx) = []; |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
56 endif |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
57 x(idx) = []; |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
58 y(idx) = []; |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
59 if (nd == 2) |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
60 z = zeros (length (x), 0); |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
61 endif |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
62 if (numel (s) > 1) |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
63 s(idx) = []; |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
64 endif |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
65 |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
66 firstnonnumeric = find (! cellfun ("isnumeric", varargin(istart:nargin)), 1); |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
67 if (isempty (firstnonnumeric)) |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
68 firstnonnumeric = Inf; |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
69 else |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
70 firstnonnumeric += istart - 1; |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
71 endif |
a5de727e3795
__scatter__.m: Fix handling of NaNs in marker size param.
Andreas Weber <andreas.weber@hs-offenburg.de>
parents:
17404
diff
changeset
|
72 |
10697
1215ab6f3491
Honor Matlab color settings for scatter().
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
73 if (istart <= nargin && firstnonnumeric > istart) |
1215ab6f3491
Honor Matlab color settings for scatter().
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
74 c = varargin{istart}; |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
75 if (isvector (c) && columns (c) != 3) |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
76 c = c(:); |
7189 | 77 endif |
12124
cd82f5933c73
scatter: don't recognize 'filled' as a color
John W. Eaton <jwe@octave.org>
parents:
11589
diff
changeset
|
78 elseif (firstnonnumeric == istart && ischar (varargin{istart}) |
17441
c36d3a4bc42f
__scatter__.m: Use multiple strcmpi instead of strncmpi for accurate input validation.
Rik <rik@octave.org>
parents:
17434
diff
changeset
|
79 && ! ( strcmpi (varargin{istart}, "filled") |
c36d3a4bc42f
__scatter__.m: Use multiple strcmpi instead of strncmpi for accurate input validation.
Rik <rik@octave.org>
parents:
17434
diff
changeset
|
80 || strcmpi (varargin{istart}, "fill"))) |
10697
1215ab6f3491
Honor Matlab color settings for scatter().
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
81 c = varargin{istart}; |
20735
418ae0cb752f
Replace ++,-- with in-place operators for performance.
Rik <rik@octave.org>
parents:
20400
diff
changeset
|
82 firstnonnumeric += 1; |
7189 | 83 else |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
84 c = []; |
7189 | 85 endif |
86 | |
18166
d6aaf821cf8f
Add input validation for scatter(3) functions (bug #40898)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
87 ## Validate inputs |
19597
db92e7e28e1f
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
18166
diff
changeset
|
88 if (nd == 2 && ! size_equal (x, y)) |
18166
d6aaf821cf8f
Add input validation for scatter(3) functions (bug #40898)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
89 error ([fcn ": X and Y must have the same size"]); |
19597
db92e7e28e1f
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
18166
diff
changeset
|
90 elseif (nd == 3 && ! size_equal (x, y, z)) |
18166
d6aaf821cf8f
Add input validation for scatter(3) functions (bug #40898)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
91 error ([fcn ": X, Y, and Z must have the same size"]); |
d6aaf821cf8f
Add input validation for scatter(3) functions (bug #40898)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
92 endif |
d6aaf821cf8f
Add input validation for scatter(3) functions (bug #40898)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
93 |
d6aaf821cf8f
Add input validation for scatter(3) functions (bug #40898)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
94 if (! isscalar (s) && ! size_equal (x, s)) |
d6aaf821cf8f
Add input validation for scatter(3) functions (bug #40898)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
95 error ([fcn ": size of S must match X, Y, and Z"]); |
d6aaf821cf8f
Add input validation for scatter(3) functions (bug #40898)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
96 endif |
d6aaf821cf8f
Add input validation for scatter(3) functions (bug #40898)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
97 |
d6aaf821cf8f
Add input validation for scatter(3) functions (bug #40898)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
98 if (rows (c) > 1 && rows (c) != rows (x)) |
d6aaf821cf8f
Add input validation for scatter(3) functions (bug #40898)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
99 error ([fcn ": number of colors in C must match number of points in X"]); |
d6aaf821cf8f
Add input validation for scatter(3) functions (bug #40898)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
100 endif |
d6aaf821cf8f
Add input validation for scatter(3) functions (bug #40898)
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
101 |
7189 | 102 newargs = {}; |
103 filled = false; | |
104 have_marker = false; | |
105 marker = "o"; | |
106 iarg = firstnonnumeric; | |
107 while (iarg <= nargin) | |
7191 | 108 arg = varargin{iarg++}; |
17441
c36d3a4bc42f
__scatter__.m: Use multiple strcmpi instead of strncmpi for accurate input validation.
Rik <rik@octave.org>
parents:
17434
diff
changeset
|
109 if (ischar (arg) && (strcmpi (arg, "filled") || strcmpi (arg, "fill"))) |
7189 | 110 filled = true; |
17462
177147bf7b55
Overhaul use of __pltopt__.m to correctly check for cellstr, not just cell.
Rik <rik@octave.org>
parents:
17441
diff
changeset
|
111 elseif ((ischar (arg) || iscellstr (arg)) && ! have_marker) |
8257 | 112 [linespec, valid] = __pltopt__ (fcn, arg, false); |
7189 | 113 if (valid) |
10549 | 114 have_marker = true; |
115 marker = linespec.marker; | |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
116 if (strcmp (marker, "none")) |
10549 | 117 marker = "o"; |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
118 elseif (isempty (marker)) |
10701
657e63dcfd88
scatter.m: Properly set default value markersize and marker type.
Ben Abbott <bpabbott@mac.com>
parents:
10697
diff
changeset
|
119 have_marker = false; |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
120 [~, marker] = __next_line_style__ (); |
10549 | 121 endif |
7189 | 122 else |
10549 | 123 error ("%s: invalid linespec", fcn); |
7189 | 124 endif |
125 else | |
126 newargs{end+1} = arg; | |
127 if (iarg <= nargin) | |
10701
657e63dcfd88
scatter.m: Properly set default value markersize and marker type.
Ben Abbott <bpabbott@mac.com>
parents:
10697
diff
changeset
|
128 newargs{end+1} = varargin{iarg++}; |
7189 | 129 endif |
130 endif | |
131 endwhile | |
132 | |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
133 if (isempty (c)) |
14846
460a3c6d8bf1
maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents:
14782
diff
changeset
|
134 c = __next_line_color__ (); |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
135 endif |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
136 |
17434
c39fa414b5ab
__scatter__.m: Add comment that call to __next_line_color__ must precede hggroup().
Rik <rik@octave.org>
parents:
17407
diff
changeset
|
137 ## Must occur after __next_line_color__ in order to work correctly. |
8257 | 138 hg = hggroup (); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
139 newargs = __add_datasource__ (fcn, hg, {"x", "y", "z", "c", "size"}, |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
140 newargs{:}); |
8257 | 141 |
142 addproperty ("xdata", hg, "data", x); | |
143 addproperty ("ydata", hg, "data", y); | |
144 addproperty ("zdata", hg, "data", z); | |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
145 if (ischar (c)) |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
146 ## For single explicit color, cdata is unused |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
147 addproperty ("cdata", hg, "data", []); |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
148 else |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
149 addproperty ("cdata", hg, "data", c); |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
150 endif |
10078 | 151 addproperty ("sizedata", hg, "data", s); |
8257 | 152 addlistener (hg, "xdata", @update_data); |
153 addlistener (hg, "ydata", @update_data); | |
154 addlistener (hg, "zdata", @update_data); | |
155 addlistener (hg, "cdata", @update_data); | |
156 addlistener (hg, "sizedata", @update_data); | |
157 | |
14011
431c6b00653d
scatter.m: Bug fix (34936).
Ben Abbott <bpabbott@mac.com>
parents:
13988
diff
changeset
|
158 one_explicit_color = ischar (c) || isequal (size (c), [1, 3]); |
431c6b00653d
scatter.m: Bug fix (34936).
Ben Abbott <bpabbott@mac.com>
parents:
13988
diff
changeset
|
159 |
10083
614ad9e7a17b
use patches again in scatter plots
Jaroslav Hajek <highegg@gmail.com>
parents:
10082
diff
changeset
|
160 if (numel (x) <= 100) |
10078 | 161 |
162 ## For small number of points, we'll construct an object for each point. | |
163 | |
164 if (numel (s) == 1) | |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14848
diff
changeset
|
165 s = repmat (s, numel (x), 1); |
10078 | 166 endif |
167 | |
14011
431c6b00653d
scatter.m: Bug fix (34936).
Ben Abbott <bpabbott@mac.com>
parents:
13988
diff
changeset
|
168 if (one_explicit_color) |
10078 | 169 for i = 1 : numel (x) |
170 if (filled) | |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
171 __go_patch__ (hg, "xdata", x(i), "ydata", y(i), "zdata", z(i,:), |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
172 "faces", 1, "vertices", [x(i), y(i), z(i,:)], |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
173 "facecolor", "none", "edgecolor", "none", |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
174 "marker", marker, "markersize", s(i), |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
175 "markeredgecolor", c, "markerfacecolor", c, |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
176 "linestyle", "none"); |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
177 else |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
178 __go_patch__ (hg, "xdata", x(i), "ydata", y(i), "zdata", z(i,:), |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
179 "faces", 1, "vertices", [x(i), y(i), z(i,:)], |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
180 "facecolor", "none", "edgecolor", "none", |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
181 "marker", marker, "markersize", s(i), |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
182 "markeredgecolor", c, "markerfacecolor", "none", |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
183 "linestyle", "none"); |
10078 | 184 endif |
185 endfor | |
186 else | |
14011
431c6b00653d
scatter.m: Bug fix (34936).
Ben Abbott <bpabbott@mac.com>
parents:
13988
diff
changeset
|
187 if (rows (c) == 1) |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
188 c = repmat (c, rows (x), 1); |
14011
431c6b00653d
scatter.m: Bug fix (34936).
Ben Abbott <bpabbott@mac.com>
parents:
13988
diff
changeset
|
189 endif |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
190 for i = 1 : numel (x) |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
191 if (filled) |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
192 __go_patch__ (hg, "xdata", x(i), "ydata", y(i), "zdata", z(i,:), |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
193 "faces", 1, "vertices", [x(i), y(i), z(i,:)], |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
194 "facecolor", "none", "edgecolor", "none", |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
195 "marker", marker, "markersize", s(i), |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
196 "markeredgecolor", "none", |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
197 "markerfacecolor", "flat", |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
198 "cdata", c(i,:), "facevertexcdata", c(i,:), |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
199 "linestyle", "none"); |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
200 else |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
201 __go_patch__ (hg, "xdata", x(i), "ydata", y(i), "zdata", z(i,:), |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
202 "faces", 1, "vertices", [x(i), y(i), z(i,:)], |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
203 "facecolor", "none", "edgecolor", "none", |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
204 "marker", marker, "markersize", s(i), |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
205 "markeredgecolor", "flat", |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
206 "markerfacecolor", "none", |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
207 "cdata", c(i,:), "facevertexcdata", c(i,:), |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
208 "linestyle", "none"); |
10078 | 209 endif |
210 endfor | |
211 endif | |
212 | |
8257 | 213 else |
10078 | 214 |
215 ## For larger numbers of points, we split the points by common color. | |
216 | |
217 vert = [x, y, z]; | |
14011
431c6b00653d
scatter.m: Bug fix (34936).
Ben Abbott <bpabbott@mac.com>
parents:
13988
diff
changeset
|
218 if (one_explicit_color) |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
219 render_size_color (hg, vert, s, c, marker, filled, true); |
10078 | 220 else |
14011
431c6b00653d
scatter.m: Bug fix (34936).
Ben Abbott <bpabbott@mac.com>
parents:
13988
diff
changeset
|
221 if (rows (c) == 1) |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
222 c = repmat (c, rows (x), 1); |
14011
431c6b00653d
scatter.m: Bug fix (34936).
Ben Abbott <bpabbott@mac.com>
parents:
13988
diff
changeset
|
223 endif |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
224 ## We want to group points by color. So first get all the unique colors |
13986
6be49527e4cf
Fix coloured scatter when using more than 100 points (bug #34936)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13141
diff
changeset
|
225 [cc, ~, c_to_cc] = unique (c, "rows"); |
6be49527e4cf
Fix coloured scatter when using more than 100 points (bug #34936)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13141
diff
changeset
|
226 |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
227 for i = 1 : rows (cc) |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
228 ## Now for each possible unique color, get the logical index of |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
229 ## points that correspond to that color |
13986
6be49527e4cf
Fix coloured scatter when using more than 100 points (bug #34936)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13141
diff
changeset
|
230 idx = (i == c_to_cc); |
6be49527e4cf
Fix coloured scatter when using more than 100 points (bug #34936)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13141
diff
changeset
|
231 if (isscalar (s)) |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
232 render_size_color (hg, vert(idx, :), s, c(idx,:), |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
233 marker, filled, true); |
13986
6be49527e4cf
Fix coloured scatter when using more than 100 points (bug #34936)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13141
diff
changeset
|
234 else |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
235 render_size_color (hg, vert(idx, :), s(idx), c(idx,:), |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
236 marker, filled, true); |
13986
6be49527e4cf
Fix coloured scatter when using more than 100 points (bug #34936)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13141
diff
changeset
|
237 endif |
6be49527e4cf
Fix coloured scatter when using more than 100 points (bug #34936)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13141
diff
changeset
|
238 endfor |
6be49527e4cf
Fix coloured scatter when using more than 100 points (bug #34936)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13141
diff
changeset
|
239 |
7189 | 240 endif |
10078 | 241 endif |
242 | |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
243 if (! ischar (c) && rows (c) > 1) |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
244 ax = get (hg, "parent"); |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
245 clim = get (ax, "clim"); |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14848
diff
changeset
|
246 if (min (c(:)) < clim(1)) |
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14848
diff
changeset
|
247 clim(1) = min (c(:)); |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
248 set (ax, "clim", clim); |
7189 | 249 endif |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14848
diff
changeset
|
250 if (max (c(:)) > clim(2)) |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
251 set (ax, "clim", [clim(1), max(c(:))]); |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
252 endif |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
253 endif |
7189 | 254 |
8257 | 255 addproperty ("linewidth", hg, "patchlinewidth", 0.5); |
256 addproperty ("marker", hg, "patchmarker", marker); | |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
257 if (filled) |
8257 | 258 addproperty ("markeredgecolor", hg, "patchmarkeredgecolor", "none"); |
14011
431c6b00653d
scatter.m: Bug fix (34936).
Ben Abbott <bpabbott@mac.com>
parents:
13988
diff
changeset
|
259 if (one_explicit_color) |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
260 addproperty ("markerfacecolor", hg, "patchmarkerfacecolor", c); |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
261 else |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
262 addproperty ("markerfacecolor", hg, "patchmarkerfacecolor", "flat"); |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
263 endif |
8257 | 264 else |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
265 addproperty ("markerfacecolor", hg, "patchmarkerfacecolor", "none"); |
14011
431c6b00653d
scatter.m: Bug fix (34936).
Ben Abbott <bpabbott@mac.com>
parents:
13988
diff
changeset
|
266 if (one_explicit_color) |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
267 addproperty ("markeredgecolor", hg, "patchmarkeredgecolor", c); |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
268 else |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
269 addproperty ("markeredgecolor", hg, "patchmarkeredgecolor", "flat"); |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
270 endif |
8257 | 271 endif |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
272 addlistener (hg, "linewidth", @update_props); |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
273 addlistener (hg, "marker", @update_props); |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
274 addlistener (hg, "markerfacecolor", @update_props); |
8257 | 275 addlistener (hg, "markeredgecolor", @update_props); |
276 | |
17527
76614e624818
Add "HitTestArea" property to certain hggroups for Matlab compatibility
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
277 ## Matlab property, although Octave does not implement it. |
76614e624818
Add "HitTestArea" property to certain hggroups for Matlab compatibility
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
278 addproperty ("hittestarea", hg, "radio", "on|{off}", "off"); |
76614e624818
Add "HitTestArea" property to certain hggroups for Matlab compatibility
Rik <rik@octave.org>
parents:
17462
diff
changeset
|
279 |
8257 | 280 if (! isempty (newargs)) |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11587
diff
changeset
|
281 set (hg, newargs{:}); |
8257 | 282 endif |
283 | |
7189 | 284 endfunction |
8257 | 285 |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
286 function render_size_color (hg, vert, s, c, marker, filled, isflat) |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21604
diff
changeset
|
287 |
10078 | 288 if (isscalar (s)) |
289 x = vert(:,1); | |
290 y = vert(:,2); | |
291 z = vert(:,3:end); | |
14011
431c6b00653d
scatter.m: Bug fix (34936).
Ben Abbott <bpabbott@mac.com>
parents:
13988
diff
changeset
|
292 toolkit = get (ancestor (hg, "figure"), "__graphics_toolkit__"); |
431c6b00653d
scatter.m: Bug fix (34936).
Ben Abbott <bpabbott@mac.com>
parents:
13988
diff
changeset
|
293 ## Does gnuplot only support triangles with different vertex colors ? |
21578
683a1beee538
maint: Use "FIXME:" for all code blocks needing further attention.
Rik <rik@octave.org>
parents:
21330
diff
changeset
|
294 ## FIXME: Verify gnuplot can only support one color. If RGB triplets |
683a1beee538
maint: Use "FIXME:" for all code blocks needing further attention.
Rik <rik@octave.org>
parents:
21330
diff
changeset
|
295 ## can be assigned to each vertex, then fix __gnuplot_draw_axes__.m |
15974
53a2fb7b2557
maint: Allow scatter demo to be run under Octave or Matlab for plot comparisons
Rik <octave@nomad.inbox5.com>
parents:
14782
diff
changeset
|
296 gnuplot_hack = (numel (x) > 1 && columns (c) == 3 |
14782
566cf544d020
Fix scatter() for filled markers using gnuplot.
John Hunt <huntj@gmx.us>
parents:
14138
diff
changeset
|
297 && strcmp (toolkit, "gnuplot")); |
14011
431c6b00653d
scatter.m: Bug fix (34936).
Ben Abbott <bpabbott@mac.com>
parents:
13988
diff
changeset
|
298 if (ischar (c) || ! isflat || gnuplot_hack) |
10083
614ad9e7a17b
use patches again in scatter plots
Jaroslav Hajek <highegg@gmail.com>
parents:
10082
diff
changeset
|
299 if (filled) |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
300 __go_patch__ (hg, "xdata", x, "ydata", y, "zdata", z, |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14848
diff
changeset
|
301 "faces", 1:numel (x), "vertices", vert, |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
302 "facecolor", "none", "edgecolor", "none", |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
303 "marker", marker, |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
304 "markeredgecolor", "none", |
14011
431c6b00653d
scatter.m: Bug fix (34936).
Ben Abbott <bpabbott@mac.com>
parents:
13988
diff
changeset
|
305 "markerfacecolor", c(1,:), |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
306 "markersize", s, "linestyle", "none"); |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
307 else |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
308 __go_patch__ (hg, "xdata", x, "ydata", y, "zdata", z, |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14848
diff
changeset
|
309 "faces", 1:numel (x), "vertices", vert, |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
310 "facecolor", "none", "edgecolor", "none", |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
311 "marker", marker, |
14011
431c6b00653d
scatter.m: Bug fix (34936).
Ben Abbott <bpabbott@mac.com>
parents:
13988
diff
changeset
|
312 "markeredgecolor", c(1,:), |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
313 "markerfacecolor", "none", |
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
314 "markersize", s, "linestyle", "none"); |
10083
614ad9e7a17b
use patches again in scatter plots
Jaroslav Hajek <highegg@gmail.com>
parents:
10082
diff
changeset
|
315 endif |
614ad9e7a17b
use patches again in scatter plots
Jaroslav Hajek <highegg@gmail.com>
parents:
10082
diff
changeset
|
316 else |
614ad9e7a17b
use patches again in scatter plots
Jaroslav Hajek <highegg@gmail.com>
parents:
10082
diff
changeset
|
317 if (filled) |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
318 __go_patch__ (hg, "xdata", x, "ydata", y, "zdata", z, |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14848
diff
changeset
|
319 "faces", 1:numel (x), "vertices", vert, |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
320 "facecolor", "none", "edgecolor", "none", |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
321 "marker", marker, "markersize", s, |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
322 "markeredgecolor", "none", |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
323 "markerfacecolor", "flat", |
13988
7ab497513c1a
Fix colour properties in scatter (bug #34936)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13986
diff
changeset
|
324 "cdata", c, "facevertexcdata", c, |
12446
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12124
diff
changeset
|
325 "linestyle", "none"); |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
326 else |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
327 __go_patch__ (hg, "xdata", x, "ydata", y, "zdata", z, |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14848
diff
changeset
|
328 "faces", 1:numel (x), "vertices", vert, |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
329 "facecolor", "none", "edgecolor", "none", |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
330 "marker", marker, "markersize", s, |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
331 "markeredgecolor", "flat", |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
332 "markerfacecolor", "none", |
13988
7ab497513c1a
Fix colour properties in scatter (bug #34936)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13986
diff
changeset
|
333 "cdata", c, "facevertexcdata", c, |
12446
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12124
diff
changeset
|
334 "linestyle", "none"); |
10083
614ad9e7a17b
use patches again in scatter plots
Jaroslav Hajek <highegg@gmail.com>
parents:
10082
diff
changeset
|
335 endif |
10078 | 336 endif |
337 else | |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
338 ## Round size to one decimal place. |
13986
6be49527e4cf
Fix coloured scatter when using more than 100 points (bug #34936)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13141
diff
changeset
|
339 [ss, ~, s_to_ss] = unique (ceil (s*10) / 10); |
10078 | 340 for i = 1:rows (ss) |
13986
6be49527e4cf
Fix coloured scatter when using more than 100 points (bug #34936)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13141
diff
changeset
|
341 idx = (i == s_to_ss); |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
342 render_size_color (hg, vert(idx,:), ss(i), c, |
10135
4516a0c97ced
Handle linestyleorder. Remove @ markers. Treat edgecolor, markeredgecolor and markerfacecolor correctly in scatter.
David Bateman <dbateman@free.fr>
parents:
10083
diff
changeset
|
343 marker, filled, isflat); |
10078 | 344 endfor |
345 endif | |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21604
diff
changeset
|
346 |
10078 | 347 endfunction |
348 | |
8257 | 349 function update_props (h, d) |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21604
diff
changeset
|
350 |
8257 | 351 lw = get (h, "linewidth"); |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
352 m = get (h, "marker"); |
8257 | 353 fc = get (h, "markerfacecolor"); |
354 ec = get (h, "markeredgecolor"); | |
355 kids = get (h, "children"); | |
356 | |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
357 set (kids, "linewidth", lw, "marker", m, |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
358 "markerfacecolor", fc, "markeredgecolor", ec); |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21604
diff
changeset
|
359 |
8257 | 360 endfunction |
361 | |
21330
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
362 ## FIXME: This callback routine doesn't handle the case where N > 100. |
8257 | 363 function update_data (h, d) |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21604
diff
changeset
|
364 |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
365 x = get (h, "xdata"); |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
366 y = get (h, "ydata"); |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
367 z = get (h, "zdata"); |
21330
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
368 if (numel (x) > 100) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
369 error ("scatter: cannot update data with more than 100 points. Call scatter (x, y, ...) with new data instead."); |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
370 endif |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
371 c = get (h, "cdata"); |
21330
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
372 one_explicit_color = ischar (c) || isequal (size (c), [1, 3]); |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
373 if (! one_explicit_color) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
374 if (rows (c) == 1) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
375 c = repmat (c, numel (x), 1); |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
376 endif |
8257 | 377 endif |
21604
d7a268e68e69
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
21578
diff
changeset
|
378 filled = ! strcmp (get (h, "markerfacecolor"), "none"); |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
379 s = get (h, "sizedata"); |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
380 if (numel (s) == 1) |
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
381 s = repmat (s, numel (x), 1); |
8257 | 382 endif |
383 hlist = get (h, "children"); | |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
384 |
21330
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
385 if (one_explicit_color) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
386 if (filled) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
387 if (isempty (z)) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
388 for i = 1 : length (hlist) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
389 set (hlist(i), "vertices", [x(i), y(i)], |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
390 "markersize", s(i), |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
391 "markeredgecolor", c, "markerfacecolor", c); |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
392 |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
393 endfor |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
394 else |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
395 for i = 1 : length (hlist) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
396 set (hlist(i), "vertices", [x(i), y(i), z(i)], |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
397 "markersize", s(i), |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
398 "markeredgecolor", c, "markerfacecolor", c); |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
399 endfor |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
400 endif |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
401 else |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
402 if (isempty (z)) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
403 for i = 1 : length (hlist) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
404 set (hlist(i), "vertices", [x(i), y(i)], |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
405 "markersize", s(i), |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
406 "markeredgecolor", c, "markerfacecolor", "none"); |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
407 |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
408 endfor |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
409 else |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
410 for i = 1 : length (hlist) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
411 set (hlist(i), "vertices", [x(i), y(i), z(i)], |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
412 "markersize", s(i), |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
413 "markeredgecolor", c, "markerfacecolor", "none"); |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
414 endfor |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
415 endif |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
416 endif |
8257 | 417 else |
21330
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
418 if (filled) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
419 if (isempty (z)) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
420 for i = 1 : length (hlist) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
421 set (hlist(i), "vertices", [x(i), y(i)], |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
422 "markersize", s(i), |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
423 "markeredgecolor", "none", "markerfacecolor", "flat", |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
424 "cdata", reshape (c(i,:),[1, size(c)(2:end)]), |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
425 "facevertexcdata", c(i,:)); |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
426 endfor |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
427 else |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
428 for i = 1 : length (hlist) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
429 set (hlist(i), "vertices", [x(i), y(i), z(i)], |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
430 "markersize", s(i), |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
431 "markeredgecolor", "none", "markerfacecolor", "flat", |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
432 "cdata", reshape (c(i,:),[1, size(c)(2:end)]), |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
433 "facevertexcdata", c(i,:)); |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
434 endfor |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
435 endif |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
436 else |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
437 if (isempty (z)) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
438 for i = 1 : length (hlist) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
439 set (hlist(i), "vertices", [x(i), y(i)], |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
440 "markersize", s(i), |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
441 "markeredgecolor", "flat", "markerfacecolor", "none", |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
442 "cdata", reshape (c(i,:),[1, size(c)(2:end)]), |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
443 "facevertexcdata", c(i,:)); |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
444 endfor |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
445 else |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
446 for i = 1 : length (hlist) |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
447 set (hlist(i), "vertices", [x(i), y(i), z(i)], |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
448 "markersize", s(i), |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
449 "markeredgecolor", "flat", "markerfacecolor", "none", |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
450 "cdata", reshape (c(i,:),[1, size(c)(2:end)]), |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
451 "facevertexcdata", c(i,:)); |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
452 endfor |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
453 endif |
fb7f40558553
Fix callback routine for updating scatter plots (bug #47237).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
454 endif |
8257 | 455 endif |
17404
5e552cd9315a
Overhaul scatter family of functions
Rik <rik@octave.org>
parents:
17338
diff
changeset
|
456 |
8257 | 457 endfunction |
17338
1c89599167a6
maint: End m-files with 1 blank line.
Rik <rik@octave.org>
parents:
15975
diff
changeset
|
458 |