annotate scripts/plot/draw/pie.m @ 19016:87c3848cf3c0

Fix bug when hggroup used with primitive graphic object (bug #42532). * image.m, text.m, line.m, patch.m: __plt_get_axis_arg__ will return axis and hggroup when 'parent' property is used. Select the first returned object which is the axes, rather than passing both axis and hggroup to further plot subroutines.
author Rik <rik@octave.org>
date Tue, 10 Jun 2014 14:03:09 -0700
parents 9ac2357f19bc
children 0e1f5a750d00
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17744
d63878346099 maint: Update copyright notices for release.
John W. Eaton <jwe@octave.org>
parents: 17572
diff changeset
1 ## Copyright (C) 2007-2013 David Bateman
7118
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
2 ##
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
3 ## This file is part of Octave.
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
4 ##
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
6 ## under the terms of the GNU General Public License as published by
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
8 ## your option) any later version.
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
9 ##
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
13 ## General Public License for more details.
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
14 ##
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
17 ## <http://www.gnu.org/licenses/>.
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
18
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
19 ## -*- texinfo -*-
11341
3c7ba1e3dc21 Add missing option slice for pie and pie3
Kai Habel <kai.habel@gmx.de>
parents: 11330
diff changeset
20 ## @deftypefn {Function File} {} pie (@var{x})
17064
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
21 ## @deftypefnx {Function File} {} pie (@dots{}, @var{explode})
7118
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
22 ## @deftypefnx {Function File} {} pie (@dots{}, @var{labels})
17064
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
23 ## @deftypefnx {Function File} {} pie (@var{hax}, @dots{});
7118
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
24 ## @deftypefnx {Function File} {@var{h} =} pie (@dots{});
16814
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 14359
diff changeset
25 ## Plot a 2-D pie chart.
7118
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
26 ##
16814
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 14359
diff changeset
27 ## When called with a single vector argument, produce a pie chart of the
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 14359
diff changeset
28 ## elements in @var{x}. The size of the ith slice is the percentage that the
17064
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
29 ## element @var{x}i represents of the total sum of @var{x}:
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
30 ## @code{pct = @var{x}(i) / sum (@var{x})}.
7118
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
31 ##
17064
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
32 ## The optional input @var{explode} is a vector of the same length as @var{x}
19007
9ac2357f19bc doc: Replace "non-zero" with "nonzero" to match existing usage.
Rik <rik@octave.org>
parents: 17744
diff changeset
33 ## that, if nonzero, "explodes" the slice from the pie chart.
7118
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
34 ##
16814
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 14359
diff changeset
35 ## The optional input @var{labels} is a cell array of strings of the same
64e7bb01fce2 doc: Improve documentation for 2-D plot functions
Rik <rik@octave.org>
parents: 14359
diff changeset
36 ## length as @var{x} specifying the label for each slice.
17064
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
37 ##
17122
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17064
diff changeset
38 ## 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: 17064
diff changeset
39 ## rather than the current axes returned by @code{gca}.
7118
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
40 ##
14001
5f0bb45e615c doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
41 ## The optional return value @var{h} is a list of handles to the patch
5f0bb45e615c doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
42 ## and text objects generating the plot.
7118
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
43 ##
17064
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
44 ## Note: If @code{sum (@var{x}) @leq{} 1} then the elements of @var{x} are
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
45 ## interpreted as percentages directly and are not normalized by @code{sum (x)}.
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
46 ## Furthermore, if the sum is less than 1 then there will be a missing slice
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
47 ## in the pie plot to represent the missing, unspecified percentage.
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
48 ##
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
49 ## @seealso{pie3, bar, hist, rose}
7118
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
50 ## @end deftypefn
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
51
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
52 ## Very roughly based on pie.m from octave-forge whose author was
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
53 ## Daniel Heiserer <Daniel.heiserer@physik.tu-muenchen.de>
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
54
17064
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
55 function h = pie (varargin)
7118
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
56
17064
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
57 [hax, varargin, nargin] = __plt_get_axis_arg__ ("pie", varargin{:});
7215
dd88d61d443f [project @ 2007-11-29 16:44:45 by jwe]
jwe
parents: 7208
diff changeset
58
7118
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
59 if (nargin < 1)
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
60 print_usage ();
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
61 endif
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
62
17211
87ba70043bfc Don't use ifelse in plot fcns to avoid unnecessary fcn evaluations.
Rik <rik@octave.org>
parents: 17190
diff changeset
63 oldfig = [];
17301
68bcac3c043a Correct inversion accidentally introduced in cset 87ba70043bfc.
Rik <rik@octave.org>
parents: 17211
diff changeset
64 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
65 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
66 endif
17064
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
67 unwind_protect
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
68 hax = newplot (hax);
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
69 htmp = __pie__ ("pie", hax, varargin{:});
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
70 unwind_protect_cleanup
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
71 if (! isempty (oldfig))
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
72 set (0, "currentfigure", oldfig);
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
73 endif
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
74 end_unwind_protect
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
75
7118
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
76 if (nargout > 0)
17064
84e000930ca5 pie.m, pie3.m: Update to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents: 16814
diff changeset
77 h = htmp;
7118
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
78 endif
7119
d22ad51b9cf8 [project @ 2007-11-07 21:06:27 by jwe]
jwe
parents: 7118
diff changeset
79
7118
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
80 endfunction
d32f867e4dda [project @ 2007-11-07 20:44:11 by jwe]
jwe
parents:
diff changeset
81
14001
5f0bb45e615c doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
82
7120
a2174fb073d4 [project @ 2007-11-07 21:26:43 by jwe]
jwe
parents: 7119
diff changeset
83 %!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
84 %! clf;
7120
a2174fb073d4 [project @ 2007-11-07 21:26:43 by jwe]
jwe
parents: 7119
diff changeset
85 %! pie ([3, 2, 1], [0, 0, 1]);
14001
5f0bb45e615c doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
86 %! colormap ([1,0,0;0,1,0;0,0,1;1,1,0;1,0,1;0,1,1]);
17190
df4c4b7708a4 Add titles and clean-up plotting %!demos.
Rik <rik@octave.org>
parents: 17122
diff changeset
87 %! title ('pie() with exploded wedge');
7120
a2174fb073d4 [project @ 2007-11-07 21:26:43 by jwe]
jwe
parents: 7119
diff changeset
88
a2174fb073d4 [project @ 2007-11-07 21:26:43 by jwe]
jwe
parents: 7119
diff changeset
89 %!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
90 %! clf;
14245
4506eade9f04 Use Matlab coding conventions for demos in plot/ directory.
Rik <octave@nomad.inbox5.com>
parents: 14237
diff changeset
91 %! pie ([3, 2, 1], [0, 0, 1], {'Cheddar', 'Swiss', 'Camembert'});
14001
5f0bb45e615c doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
92 %! colormap ([1,0,0;0,1,0;0,0,1;1,1,0;1,0,1;0,1,1]);
7120
a2174fb073d4 [project @ 2007-11-07 21:26:43 by jwe]
jwe
parents: 7119
diff changeset
93 %! axis ([-2,2,-2,2]);
17190
df4c4b7708a4 Add titles and clean-up plotting %!demos.
Rik <rik@octave.org>
parents: 17122
diff changeset
94 %! title ('pie() with labels');
df4c4b7708a4 Add titles and clean-up plotting %!demos.
Rik <rik@octave.org>
parents: 17122
diff changeset
95
11341
3c7ba1e3dc21 Add missing option slice for pie and pie3
Kai Habel <kai.habel@gmx.de>
parents: 11330
diff changeset
96
3c7ba1e3dc21 Add missing option slice for pie and pie3
Kai Habel <kai.habel@gmx.de>
parents: 11330
diff changeset
97 %!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
98 %! clf;
14245
4506eade9f04 Use Matlab coding conventions for demos in plot/ directory.
Rik <octave@nomad.inbox5.com>
parents: 14237
diff changeset
99 %! pie ([0.17, 0.34, 0.41], {'Cheddar', 'Swiss', 'Camembert'});
14001
5f0bb45e615c doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
100 %! colormap ([1,0,0;0,1,0;0,0,1;1,1,0;1,0,1;0,1,1]);
11341
3c7ba1e3dc21 Add missing option slice for pie and pie3
Kai Habel <kai.habel@gmx.de>
parents: 11330
diff changeset
101 %! axis ([-2,2,-2,2]);
17190
df4c4b7708a4 Add titles and clean-up plotting %!demos.
Rik <rik@octave.org>
parents: 17122
diff changeset
102 %! title ('pie() with missing slice');
14001
5f0bb45e615c doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
103