1 ## Copyright (C) 2007-2012 Kai Habel
2 ## Copyright (C) 2003 Shai Ayal
4 ## This file is part of Octave.
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.
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.
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/>.
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.
32 ## The return value @var{c} is a 2xn matrix containing the contour lines
33 ## as described in the help to the contourc function.
35 ## The return value @var{h} is handle-vector to the patch objects creating
36 ## the filled contours.
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.
45 ## If provided, the filled contours are added to the axes object
46 ## @var{ax} instead of the current axis.
48 ## The following example plots filled contours of the @code{peaks}
53 ## [x, y, z] = peaks (50);
54 ## contourf (x, y, z, -7:9)
57 ## @seealso{contour, contourc, patch}
60 ## Author: Kai Habel <kai.habel@gmx.de>
61 ## Author: Shai Ayal <shaiay@users.sourceforge.net>
63 function [c, h] = contourf (varargin)
65 [xh, varargin] = __plt_get_axis_arg__ ("contour", varargin{:});
71 [ctmp, htmp] = __contour__ (xh, "none", "fill", "on",
72 "linecolor", "black", varargin{:});
73 unwind_protect_cleanup
85 %! [x, y, z] = peaks (50);
86 %! contourf (x, y, z, -7:9)
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)