Mercurial > hg > octave-nkf
annotate scripts/plot/contour.m @ 17525:76a6d7de4cbc
Fix multiple problem with listeners for contour groups.
* scripts/plot/contour.m: Add new %!demo showing use of a single contour line.
* scripts/plot/private/__contour__.m: Fix bug with lowest level of contourf
showing background through. Use same routines for calculating levels and
levelstep in main code and in listeners. Fix linecolor when turning "fill" on
and off. Fix "textlist" and "textliststep" properties which were not
activating correctly.
author | Rik <rik@octave.org> |
---|---|
date | Tue, 01 Oct 2013 12:51:04 -0700 |
parents | 68bcac3c043a |
children |
rev | line source |
---|---|
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
13156
diff
changeset
|
1 ## Copyright (C) 1993-2012 Shai Ayal |
2313 | 2 ## |
6440 | 3 ## This file is part of Octave. |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
2313 | 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. | |
2313 | 9 ## |
6440 | 10 ## Octave is distributed in the hope that it will be useful, but |
2313 | 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/>. | |
245 | 18 |
3368 | 19 ## -*- texinfo -*- |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
8920
diff
changeset
|
20 ## @deftypefn {Function File} {} contour (@var{z}) |
7317 | 21 ## @deftypefnx {Function File} {} contour (@var{z}, @var{vn}) |
22 ## @deftypefnx {Function File} {} contour (@var{x}, @var{y}, @var{z}) | |
23 ## @deftypefnx {Function File} {} contour (@var{x}, @var{y}, @var{z}, @var{vn}) | |
24 ## @deftypefnx {Function File} {} contour (@dots{}, @var{style}) | |
17122
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
25 ## @deftypefnx {Function File} {} contour (@var{hax}, @dots{}) |
7170 | 26 ## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contour (@dots{}) |
17122
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
27 ## Create a 2-D contour plot. |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
28 ## |
6604 | 29 ## Plot level curves (contour lines) of the matrix @var{z}, using the |
30 ## contour matrix @var{c} computed by @code{contourc} from the same | |
17122
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
31 ## arguments; see the latter for their interpretation. |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
32 ## |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
33 ## The appearance of contour lines can be defined with a line style @var{style} |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
34 ## in the same manner as @code{plot}. Only line style and color are used; |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
35 ## Any markers defined by @var{style} are ignored. |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
36 ## |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
37 ## If the first argument @var{hax} is an axes handle, then plot into this axis, |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
38 ## rather than the current axes returned by @code{gca}. |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
39 ## |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
40 ## The optional output @var{c} are the contour levels in @code{contourc} format. |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
41 ## |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
42 ## The optional return value @var{h} is a graphics handle to the hggroup |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
43 ## comprising the contour lines. |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
44 ## |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
45 ## Example: |
6257 | 46 ## |
47 ## @example | |
6604 | 48 ## @group |
49 ## x = 0:2; | |
50 ## y = x; | |
51 ## z = x' * y; | |
52 ## contour (x, y, z, 2:3) | |
53 ## @end group | |
6257 | 54 ## @end example |
7170 | 55 ## |
17122
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17050
diff
changeset
|
56 ## @seealso{ezcontour, contourc, contourf, contour3, clabel, meshc, surfc, caxis, colormap, plot} |
7317 | 57 ## |
3368 | 58 ## @end deftypefn |
4 | 59 |
7327 | 60 ## Author: Shai Ayal <shaiay@users.sourceforge.net> |
6257 | 61 |
7170 | 62 function [c, h] = contour (varargin) |
6434 | 63 |
17050
9ff7d4849f03
contour[3f].m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
16911
diff
changeset
|
64 [hax, varargin] = __plt_get_axis_arg__ ("contour", varargin{:}); |
7216 | 65 |
17211
87ba70043bfc
Don't use ifelse in plot fcns to avoid unnecessary fcn evaluations.
Rik <rik@octave.org>
parents:
17190
diff
changeset
|
66 oldfig = []; |
17301
68bcac3c043a
Correct inversion accidentally introduced in cset 87ba70043bfc.
Rik <rik@octave.org>
parents:
17257
diff
changeset
|
67 if (! isempty (hax)) |
17211
87ba70043bfc
Don't use ifelse in plot fcns to avoid unnecessary fcn evaluations.
Rik <rik@octave.org>
parents:
17190
diff
changeset
|
68 oldfig = get (0, "currentfigure"); |
87ba70043bfc
Don't use ifelse in plot fcns to avoid unnecessary fcn evaluations.
Rik <rik@octave.org>
parents:
17190
diff
changeset
|
69 endif |
7215 | 70 unwind_protect |
17050
9ff7d4849f03
contour[3f].m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
16911
diff
changeset
|
71 hax = newplot (hax); |
9ff7d4849f03
contour[3f].m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
16911
diff
changeset
|
72 |
9ff7d4849f03
contour[3f].m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
16911
diff
changeset
|
73 [ctmp, htmp] = __contour__ (hax, "none", varargin{:}); |
7215 | 74 unwind_protect_cleanup |
17050
9ff7d4849f03
contour[3f].m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
16911
diff
changeset
|
75 if (! isempty (oldfig)) |
9ff7d4849f03
contour[3f].m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
16911
diff
changeset
|
76 set (0, "currentfigure", oldfig); |
9ff7d4849f03
contour[3f].m: Update to use new __plt_get_axis_arg__.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
16911
diff
changeset
|
77 endif |
7215 | 78 end_unwind_protect |
6257 | 79 |
80 if (nargout > 0) | |
7170 | 81 c = ctmp; |
7189 | 82 h = htmp; |
4 | 83 endif |
84 | |
85 endfunction | |
7245 | 86 |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
87 |
7245 | 88 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
89 %! clf; |
14247
c4fa5e0b6193
test: Make surface demos reproducible by setting colormap to default at start of demo.
Rik <octave@nomad.inbox5.com>
parents:
14245
diff
changeset
|
90 %! colormap ('default'); |
7245 | 91 %! [x, y, z] = peaks (); |
92 %! contour (x, y, z); | |
17257
ce55a8575874
Fix typo in titles for contour/contourf demos.
Rik <rik@octave.org>
parents:
17211
diff
changeset
|
93 %! title ({'contour() plot (isolines of constant Z)'; 'Z = peaks()'}); |
7327 | 94 |
95 %!demo | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
96 %! clf; |
14247
c4fa5e0b6193
test: Make surface demos reproducible by setting colormap to default at start of demo.
Rik <octave@nomad.inbox5.com>
parents:
14245
diff
changeset
|
97 %! colormap ('default'); |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
98 %! [theta, r] = meshgrid (linspace (0,2*pi,64), linspace (0,1,64)); |
7331 | 99 %! [X, Y] = pol2cart (theta, r); |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
100 %! Z = sin (2*theta) .* (1-r); |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14247
diff
changeset
|
101 %! contour (X, Y, abs (Z), 10); |
17257
ce55a8575874
Fix typo in titles for contour/contourf demos.
Rik <rik@octave.org>
parents:
17211
diff
changeset
|
102 %! title ({'contour() plot'; 'polar fcn: Z = sin (2*theta) * (1-r)'}); |
13156
da71f676e449
Fix bug #34282. Fill holes in contours with the background colour
Ben Abbott <bpabbott@mac.com>
parents:
11587
diff
changeset
|
103 |
17525
76a6d7de4cbc
Fix multiple problem with listeners for contour groups.
Rik <rik@octave.org>
parents:
17301
diff
changeset
|
104 %!demo |
76a6d7de4cbc
Fix multiple problem with listeners for contour groups.
Rik <rik@octave.org>
parents:
17301
diff
changeset
|
105 %! clf; |
76a6d7de4cbc
Fix multiple problem with listeners for contour groups.
Rik <rik@octave.org>
parents:
17301
diff
changeset
|
106 %! colormap ('default'); |
76a6d7de4cbc
Fix multiple problem with listeners for contour groups.
Rik <rik@octave.org>
parents:
17301
diff
changeset
|
107 %! z = peaks (); |
76a6d7de4cbc
Fix multiple problem with listeners for contour groups.
Rik <rik@octave.org>
parents:
17301
diff
changeset
|
108 %! contour (z, [0 0]); |
76a6d7de4cbc
Fix multiple problem with listeners for contour groups.
Rik <rik@octave.org>
parents:
17301
diff
changeset
|
109 %! title ({'contour() plot with single isoline at Z == 0'; 'Z = peaks()'}); |
76a6d7de4cbc
Fix multiple problem with listeners for contour groups.
Rik <rik@octave.org>
parents:
17301
diff
changeset
|
110 |
16911 | 111 %!test |
112 %! hf = figure ("visible", "off"); | |
113 %! clf (hf); | |
114 %! unwind_protect | |
115 %! [x, y, z] = peaks (); | |
116 %! [c, h] = contour (x, y, z); | |
17525
76a6d7de4cbc
Fix multiple problem with listeners for contour groups.
Rik <rik@octave.org>
parents:
17301
diff
changeset
|
117 %! levellist = -6:6; |
16911 | 118 %! set (h, "levellist", levellist); |
119 %! assert (get (h, "levellist"), levellist) | |
120 %! assert (get (h, "levellistmode"), "manual") | |
121 %! unwind_protect_cleanup | |
122 %! close (hf); | |
123 %! end_unwind_protect | |
124 | |
125 %!test | |
126 %! hf = figure ("visible", "off"); | |
127 %! clf (hf); | |
128 %! unwind_protect | |
129 %! [x, y, z] = peaks (); | |
130 %! [c, h] = contour (x, y, z); | |
131 %! levelstep = 3; | |
132 %! set (h, "levelstep", levelstep); | |
133 %! assert (get (h, "levelstep"), levelstep) | |
134 %! assert (get (h, "levelstepmode"), "manual") | |
17525
76a6d7de4cbc
Fix multiple problem with listeners for contour groups.
Rik <rik@octave.org>
parents:
17301
diff
changeset
|
135 %! assert (get (h, "levellist"), -6:levelstep:6) |
16911 | 136 %! assert (get (h, "levellistmode"), "auto") |
137 %! unwind_protect_cleanup | |
138 %! close (hf); | |
139 %! end_unwind_protect | |
140 |