Mercurial > hg > octave-lyh
annotate scripts/plot/hold.m @ 13204:be7bfd59300a
Add tests for scripts/plot
(plot/figure.m, plot/ishold.m, plot/ishold.m, plot/newplot.m): Add tests.
author | Kai Habel <kai.habel@gmx.de> |
---|---|
date | Fri, 23 Sep 2011 22:18:05 +0200 |
parents | c792872f8942 |
children | 72c96de7a403 |
rev | line source |
---|---|
11523 | 1 ## Copyright (C) 2005-2011 John W. Eaton |
5406 | 2 ## |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7016 | 7 ## the Free Software Foundation; either version 3 of the License, or (at |
8 ## your option) any later version. | |
5406 | 9 ## |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
7016 | 16 ## along with Octave; see the file COPYING. If not, see |
17 ## <http://www.gnu.org/licenses/>. | |
5406 | 18 |
19 ## -*- texinfo -*- | |
11563
3c6e8aaa9555
Grammarcheck m-files before 3.4 release.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
20 ## @deftypefn {Command} {} hold |
3c6e8aaa9555
Grammarcheck m-files before 3.4 release.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
21 ## @deftypefnx {Command} {} hold @var{state} |
9316
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
22 ## @deftypefnx {Function File} {} hold (@var{hax}, @dots{}) |
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
23 ## Toggle or set the 'hold' state of the plotting engine which determines |
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
24 ## whether new graphic objects are added to the plot or replace the existing |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11563
diff
changeset
|
25 ## objects. |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11563
diff
changeset
|
26 ## |
9316
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
27 ## @table @code |
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
28 ## @item hold on |
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
29 ## Retain plot data and settings so that subsequent plot commands are displayed |
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
30 ## on a single graph. |
5406 | 31 ## |
10770
84c35a483d1f
Support 'hold all' (Feature Request #30336)
David Bateman <dbateman@free.fr>
parents:
10549
diff
changeset
|
32 ## @item hold all |
84c35a483d1f
Support 'hold all' (Feature Request #30336)
David Bateman <dbateman@free.fr>
parents:
10549
diff
changeset
|
33 ## Retain plot line color, line style, data and settings so that subsequent |
84c35a483d1f
Support 'hold all' (Feature Request #30336)
David Bateman <dbateman@free.fr>
parents:
10549
diff
changeset
|
34 ## plot commands are displayed on a single graph with the next line color and |
84c35a483d1f
Support 'hold all' (Feature Request #30336)
David Bateman <dbateman@free.fr>
parents:
10549
diff
changeset
|
35 ## style. |
84c35a483d1f
Support 'hold all' (Feature Request #30336)
David Bateman <dbateman@free.fr>
parents:
10549
diff
changeset
|
36 ## |
9316
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
37 ## @item hold off |
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
38 ## Clear plot and restore default graphics settings before each new plot |
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
39 ## command. (default). |
7985
85c5c1d55820
hold.m: Trival mod to help text.
Ben Abbott <bpabbott@mac.com>
parents:
7017
diff
changeset
|
40 ## |
9316
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
41 ## @item hold |
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
42 ## Toggle the current 'hold' state. |
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
43 ## @end table |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11563
diff
changeset
|
44 ## |
9316
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
45 ## When given the additional argument @var{hax}, the hold state is modified |
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
46 ## only for the given axis handle. |
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
47 ## |
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
48 ## To query the current 'hold' state use the @code{ishold} function. |
c539ec5726e7
Update some of Advanced Plotting documentation.
Rik <rdrider0-list@yahoo.com>
parents:
9272
diff
changeset
|
49 ## @seealso{ishold, cla, newplot, clf} |
5406 | 50 ## @end deftypefn |
51 | |
6257 | 52 function hold (varargin) |
5406 | 53 |
9618
e381f80a5f7a
correctly toggle hold state
John W. Eaton <jwe@octave.org>
parents:
9328
diff
changeset
|
54 if (nargin > 0 && numel (varargin{1}) == 1 && ishandle (varargin{1}) |
8240
5cfeb7bc497a
comet.m,hold.m: validate axes handle
Ben Abbott <bpabbott@mac.com>
parents:
8190
diff
changeset
|
55 && strcmp (get (varargin{1}, "type"), "axes")) |
9618
e381f80a5f7a
correctly toggle hold state
John W. Eaton <jwe@octave.org>
parents:
9328
diff
changeset
|
56 [ax, varargin, nargs] = __plt_get_axis_arg__ ("hold", varargin{:}); |
10916
5074494f01a9
allow hold to work if given axis handle
Pascal A. Dupuis <Pascal.Dupuis@worldonline.be>
parents:
10770
diff
changeset
|
57 fig = get (ax, "parent"); |
9618
e381f80a5f7a
correctly toggle hold state
John W. Eaton <jwe@octave.org>
parents:
9328
diff
changeset
|
58 elseif (nargin > 0 && numel (varargin{1}) > 1 && ishandle (varargin{1})) |
8189
8e8afefe9466
Remove reliance on ishandle(vec) == false.
Ben Abbott <bpabbott@mac.com>
parents:
8075
diff
changeset
|
59 print_usage (); |
8065
6333da0dfdfd
hold.m: if hold is applied to a figure, set state for all child axes objects
John W. Eaton <jwe@octave.org>
parents:
7985
diff
changeset
|
60 else |
9618
e381f80a5f7a
correctly toggle hold state
John W. Eaton <jwe@octave.org>
parents:
9328
diff
changeset
|
61 ax = gca (); |
e381f80a5f7a
correctly toggle hold state
John W. Eaton <jwe@octave.org>
parents:
9328
diff
changeset
|
62 fig = gcf (); |
8065
6333da0dfdfd
hold.m: if hold is applied to a figure, set state for all child axes objects
John W. Eaton <jwe@octave.org>
parents:
7985
diff
changeset
|
63 nargs = numel (varargin); |
6333da0dfdfd
hold.m: if hold is applied to a figure, set state for all child axes objects
John W. Eaton <jwe@octave.org>
parents:
7985
diff
changeset
|
64 endif |
5406 | 65 |
10770
84c35a483d1f
Support 'hold all' (Feature Request #30336)
David Bateman <dbateman@free.fr>
parents:
10549
diff
changeset
|
66 hold_all = false; |
6257 | 67 if (nargs == 0) |
9618
e381f80a5f7a
correctly toggle hold state
John W. Eaton <jwe@octave.org>
parents:
9328
diff
changeset
|
68 turn_hold_off = ishold (ax); |
6257 | 69 elseif (nargs == 1) |
70 state = varargin{1}; | |
71 if (ischar (state)) | |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8189
diff
changeset
|
72 if (strcmpi (state, "off")) |
10549 | 73 turn_hold_off = true; |
10770
84c35a483d1f
Support 'hold all' (Feature Request #30336)
David Bateman <dbateman@free.fr>
parents:
10549
diff
changeset
|
74 elseif (strcmpi (state, "all")) |
84c35a483d1f
Support 'hold all' (Feature Request #30336)
David Bateman <dbateman@free.fr>
parents:
10549
diff
changeset
|
75 turn_hold_off = false; |
84c35a483d1f
Support 'hold all' (Feature Request #30336)
David Bateman <dbateman@free.fr>
parents:
10549
diff
changeset
|
76 hold_all = true; |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8189
diff
changeset
|
77 elseif (strcmpi (state, "on")) |
10549 | 78 turn_hold_off = false; |
6257 | 79 else |
11472
1740012184f9
Use uppercase for variable names in error() strings to match Info documentation. Only m-files done.
Rik <octave@nomad.inbox5.com>
parents:
10916
diff
changeset
|
80 error ("hold: invalid hold STATE"); |
6257 | 81 endif |
5406 | 82 endif |
83 else | |
6046 | 84 print_usage (); |
5406 | 85 endif |
86 | |
9618
e381f80a5f7a
correctly toggle hold state
John W. Eaton <jwe@octave.org>
parents:
9328
diff
changeset
|
87 if (turn_hold_off) |
e381f80a5f7a
correctly toggle hold state
John W. Eaton <jwe@octave.org>
parents:
9328
diff
changeset
|
88 set (ax, "nextplot", "replace"); |
e381f80a5f7a
correctly toggle hold state
John W. Eaton <jwe@octave.org>
parents:
9328
diff
changeset
|
89 else |
e381f80a5f7a
correctly toggle hold state
John W. Eaton <jwe@octave.org>
parents:
9328
diff
changeset
|
90 set (ax, "nextplot", "add"); |
e381f80a5f7a
correctly toggle hold state
John W. Eaton <jwe@octave.org>
parents:
9328
diff
changeset
|
91 set (fig, "nextplot", "add"); |
8065
6333da0dfdfd
hold.m: if hold is applied to a figure, set state for all child axes objects
John W. Eaton <jwe@octave.org>
parents:
7985
diff
changeset
|
92 endif |
10770
84c35a483d1f
Support 'hold all' (Feature Request #30336)
David Bateman <dbateman@free.fr>
parents:
10549
diff
changeset
|
93 set (ax, "__hold_all__", hold_all); |
8065
6333da0dfdfd
hold.m: if hold is applied to a figure, set state for all child axes objects
John W. Eaton <jwe@octave.org>
parents:
7985
diff
changeset
|
94 |
5406 | 95 endfunction |
9272
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
96 |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
97 %!demo |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
98 %! clf |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
99 %! A = rand (100); |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
100 %! [X, Y] = find (A > 0.9); |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
101 %! imshow (A) |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
102 %! hold on |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
103 %! plot (X, Y, 'o') |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
104 %! hold off |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
105 |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
106 %!demo |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
107 %! clf |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
108 %! hold on |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
109 %! imagesc(1./hilb(4)); |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
110 %! plot (1:4, "-s") |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
111 %! hold off |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
112 |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
113 %!demo |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
114 %! clf |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
115 %! hold on |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
116 %! imagesc(1./hilb(2)); |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
117 %! imagesc(1./hilb(4)); |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
118 %! hold off |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
119 |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
120 %!demo |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
121 %! clf |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
122 %! hold on |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
123 %! plot (1:4, "-s") |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
124 %! imagesc(1./hilb(4)); |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
125 %! hold off |
3eda945bda43
__go_draw_axes__.m: Fix rendering of overlaping images and line objects. Add demos as well.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
126 |
9328
0307f5e5568c
__go_draw_axes__.m: Fix order when pushing group children onto kid list.
Ben Abbott <bpabbott@mac.com>
parents:
9316
diff
changeset
|
127 %!demo |
0307f5e5568c
__go_draw_axes__.m: Fix order when pushing group children onto kid list.
Ben Abbott <bpabbott@mac.com>
parents:
9316
diff
changeset
|
128 %! clf |
0307f5e5568c
__go_draw_axes__.m: Fix order when pushing group children onto kid list.
Ben Abbott <bpabbott@mac.com>
parents:
9316
diff
changeset
|
129 %! colormap (jet) |
0307f5e5568c
__go_draw_axes__.m: Fix order when pushing group children onto kid list.
Ben Abbott <bpabbott@mac.com>
parents:
9316
diff
changeset
|
130 %! t = linspace (-3, 3, 50); |
0307f5e5568c
__go_draw_axes__.m: Fix order when pushing group children onto kid list.
Ben Abbott <bpabbott@mac.com>
parents:
9316
diff
changeset
|
131 %! [x, y] = meshgrid (t, t); |
0307f5e5568c
__go_draw_axes__.m: Fix order when pushing group children onto kid list.
Ben Abbott <bpabbott@mac.com>
parents:
9316
diff
changeset
|
132 %! z = peaks (x, y); |
0307f5e5568c
__go_draw_axes__.m: Fix order when pushing group children onto kid list.
Ben Abbott <bpabbott@mac.com>
parents:
9316
diff
changeset
|
133 %! contourf (x, y, z, 10); |
0307f5e5568c
__go_draw_axes__.m: Fix order when pushing group children onto kid list.
Ben Abbott <bpabbott@mac.com>
parents:
9316
diff
changeset
|
134 %! hold ("on"); |
0307f5e5568c
__go_draw_axes__.m: Fix order when pushing group children onto kid list.
Ben Abbott <bpabbott@mac.com>
parents:
9316
diff
changeset
|
135 %! plot (vec (x), vec (y), "^"); |
0307f5e5568c
__go_draw_axes__.m: Fix order when pushing group children onto kid list.
Ben Abbott <bpabbott@mac.com>
parents:
9316
diff
changeset
|
136 %! patch ([-1.0 1.0 1.0 -1.0 -1.0], [-1.0 -1.0 1.0 1.0 -1.0], "red"); |
0307f5e5568c
__go_draw_axes__.m: Fix order when pushing group children onto kid list.
Ben Abbott <bpabbott@mac.com>
parents:
9316
diff
changeset
|
137 %! xlim ([-2.0 2.0]); |
0307f5e5568c
__go_draw_axes__.m: Fix order when pushing group children onto kid list.
Ben Abbott <bpabbott@mac.com>
parents:
9316
diff
changeset
|
138 %! ylim ([-2.0 2.0]); |
0307f5e5568c
__go_draw_axes__.m: Fix order when pushing group children onto kid list.
Ben Abbott <bpabbott@mac.com>
parents:
9316
diff
changeset
|
139 %! colorbar ("SouthOutside"); |
0307f5e5568c
__go_draw_axes__.m: Fix order when pushing group children onto kid list.
Ben Abbott <bpabbott@mac.com>
parents:
9316
diff
changeset
|
140 %! title ("Test script for some plot functions"); |
0307f5e5568c
__go_draw_axes__.m: Fix order when pushing group children onto kid list.
Ben Abbott <bpabbott@mac.com>
parents:
9316
diff
changeset
|
141 |
13204 | 142 ##hold on |
143 %!test | |
144 %! hf = figure ("visible", "off"); | |
145 %! unwind_protect | |
146 %! p = plot ([0 1]); | |
147 %! assert (!ishold); | |
148 %! hold on; | |
149 %! assert (ishold); | |
150 %! p1 = fill ([0 1 1], [0 0 1],"black"); | |
151 %! p2 = fill ([0 1 0], [0 1 1], "red"); | |
152 %! assert (length (get (hf, "children")), 1); | |
153 %! assert (length (get (gca, "children")), 3); | |
154 %! unwind_protect_cleanup | |
155 %! close (hf); | |
156 %! end_unwind_protect | |
157 | |
158 ##hold off | |
159 %!test | |
160 %! hf = figure ("visible", "off"); | |
161 %! unwind_protect | |
162 %! p = plot ([0 1]); | |
163 %! assert (!ishold); | |
164 %! hold on; | |
165 %! assert (ishold); | |
166 %! p1 = fill ([0 1 1], [0 0 1],"black"); | |
167 %! hold off | |
168 %! p2 = fill ([0 1 0], [0 1 1], "red"); | |
169 %! assert (length (get (hf, "children")), 1); | |
170 %! assert (length (get (gca, "children")), 1); | |
171 %! unwind_protect_cleanup | |
172 %! close (hf); | |
173 %! end_unwind_protect |