Mercurial > hg > octave-lyh
diff scripts/plot/pie3.m @ 11330:4f399d91eb32
add pie3 to plot functions
author | Kai Habel <kai.habel@gmx.de> |
---|---|
date | Thu, 09 Dec 2010 16:17:03 +0100 |
parents | |
children | 3c7ba1e3dc21 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/scripts/plot/pie3.m @@ -0,0 +1,77 @@ +## Copyright (C) 2007, 2008, 2009 David Bateman +## Copyright (C) 2010 Kai Habel +## +## This file is part of Octave. +## +## Octave is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or (at +## your option) any later version. +## +## Octave is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {} pie3 (@var{y}) +## @deftypefnx {Function File} {} pie3 (@var{y}, @var{explode}) +## @deftypefnx {Function File} {} pie3 (@dots{}, @var{labels}) +## @deftypefnx {Function File} {} pie3 (@var{h}, @dots{}); +## @deftypefnx {Function File} {@var{h} =} pie3 (@dots{}); +## Drawa a 3D pie chart. +## +## Called with a single vector argument, produces a 3D pie chart of the +## elements in @var{x}, with the size of the slice determined by percentage +## size of the values of @var{x}. +## +## The variable @var{explode} is a vector of the same length as @var{x} that +## if non zero 'explodes' the slice from the pie chart. +## +## If given @var{labels} is a cell array of strings of the same length as +## @var{x}, giving the labels of each of the slices of the pie chart. +## +## The optional return value @var{h} provides a handle list to patch, surface +## and text objects generating this plot. +## +## @seealso{pie, bar, stem} +## @end deftypefn + +## Very roughly based on pie.m from octave-forge whose author was +## Daniel Heiserer <Daniel.heiserer@physik.tu-muenchen.de> + +function retval = pie3 (varargin) + + [h, varargin] = __plt_get_axis_arg__ ("pie", varargin{:}); + + if (nargin < 1) + print_usage (); + else + oldh = gca (); + unwind_protect + axes (h); + newplot (); + tmp = __pie__ ("pie3", h, varargin{:}); + unwind_protect_cleanup + axes (oldh); + end_unwind_protect + endif + + if (nargout > 0) + retval = tmp; + endif + +endfunction + +%!demo +%! pie3 ([5:-1:1], [0, 0, 1, 0, 0]); +%! colormap([1,0,0;0,1,0;0,0,1;1,1,0;1,0,1;0,1,1]); + +%!demo +%! pie3 ([3, 2, 1], [0, 0, 1], {"Cheddar", "Swiss", "Camembert"}); +%! colormap([1,0,0;0,1,0;0,0,1;1,1,0;1,0,1;0,1,1]); +%! axis ([-2,2,-2,2]);