]> Creatis software - CreaPhase.git/blob - octave_packages/m/plot/contourf.m
update packages
[CreaPhase.git] / octave_packages / m / plot / contourf.m
1 ## Copyright (C) 2007-2012 Kai Habel
2 ## Copyright (C) 2003 Shai Ayal
3 ##
4 ## This file is part of Octave.
5 ##
6 ## Octave is free software; you can redistribute it and/or modify it
7 ## under the terms of the GNU General Public License as published by
8 ## the Free Software Foundation; either version 3 of the License, or (at
9 ## your option) any later version.
10 ##
11 ## Octave is distributed in the hope that it will be useful, but
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 ## General Public License for more details.
15 ##
16 ## You should have received a copy of the GNU General Public License
17 ## along with Octave; see the file COPYING.  If not, see
18 ## <http://www.gnu.org/licenses/>.
19
20 ## -*- texinfo -*-
21 ## @deftypefn  {Function File} {[@var{c}, @var{h}] =} contourf (@var{x}, @var{y}, @var{z}, @var{lvl})
22 ## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{x}, @var{y}, @var{z}, @var{n})
23 ## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{x}, @var{y}, @var{z})
24 ## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{z}, @var{n})
25 ## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{z}, @var{lvl})
26 ## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{z})
27 ## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{ax}, @dots{})
28 ## @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@dots{}, @var{"property"}, @var{val})
29 ## Compute and plot filled contours of the matrix @var{z}.
30 ## Parameters @var{x}, @var{y} and @var{n} or @var{lvl} are optional.
31 ##
32 ## The return value @var{c} is a 2xn matrix containing the contour lines
33 ## as described in the help to the contourc function.
34 ##
35 ## The return value @var{h} is handle-vector to the patch objects creating
36 ## the filled contours.
37 ##
38 ## If @var{x} and @var{y} are omitted they are taken as the row/column
39 ## index of @var{z}.  @var{n} is a scalar denoting the number of lines
40 ## to compute.  Alternatively @var{lvl} is a vector containing the
41 ## contour levels.  If only one value (e.g., lvl0) is wanted, set
42 ## @var{lvl} to [lvl0, lvl0].  If both @var{n} or @var{lvl} are omitted
43 ## a default value of 10 contour level is assumed.
44 ##
45 ## If provided, the filled contours are added to the axes object
46 ## @var{ax} instead of the current axis.
47 ##
48 ## The following example plots filled contours of the @code{peaks}
49 ## function.
50 ##
51 ## @example
52 ## @group
53 ## [x, y, z] = peaks (50);
54 ## contourf (x, y, z, -7:9)
55 ## @end group
56 ## @end example
57 ## @seealso{contour, contourc, patch}
58 ## @end deftypefn
59
60 ## Author: Kai Habel <kai.habel@gmx.de>
61 ## Author: Shai Ayal <shaiay@users.sourceforge.net>
62
63 function [c, h] = contourf (varargin)
64
65   [xh, varargin] = __plt_get_axis_arg__ ("contour", varargin{:});
66
67   oldh = gca ();
68   unwind_protect
69     axes (xh);
70     newplot ();
71     [ctmp, htmp] = __contour__ (xh, "none", "fill", "on",
72                                 "linecolor", "black", varargin{:});
73   unwind_protect_cleanup
74     axes (oldh);
75   end_unwind_protect
76
77   if (nargout > 0)
78     c = ctmp;
79     h = htmp;
80   endif
81 endfunction
82
83 %!demo
84 %! clf
85 %! [x, y, z] = peaks (50);
86 %! contourf (x, y, z, -7:9)
87
88 %!demo
89 %! clf
90 %! [theta, r] = meshgrid (linspace (0, 2*pi, 64), linspace(0,1,64));
91 %! [X, Y] = pol2cart (theta, r);
92 %! Z = sin(2*theta).*(1-r);
93 %! contourf(X, Y, abs(Z), 10)