Mercurial > hg > octave-nkf
annotate scripts/plot/draw/polar.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 | 56bff71de2ca |
children | cafffc1b70b1 |
rev | line source |
---|---|
17744
d63878346099
maint: Update copyright notices for release.
John W. Eaton <jwe@octave.org>
parents:
17572
diff
changeset
|
1 ## Copyright (C) 1993-2013 John W. Eaton |
2313 | 2 ## |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
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 ## |
10 ## Octave is distributed in the hope that it will be useful, but | |
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 -*- |
10730
390d93e20531
Plot commands now print usage information without errors
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
20 ## @deftypefn {Function File} {} polar (@var{theta}, @var{rho}) |
390d93e20531
Plot commands now print usage information without errors
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
21 ## @deftypefnx {Function File} {} polar (@var{theta}, @var{rho}, @var{fmt}) |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
22 ## @deftypefnx {Function File} {} polar (@var{cplx}) |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
23 ## @deftypefnx {Function File} {} polar (@var{cplx}, @var{fmt}) |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
24 ## @deftypefnx {Function File} {} polar (@var{hax}, @dots{}) |
10730
390d93e20531
Plot commands now print usage information without errors
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
25 ## @deftypefnx {Function File} {@var{h} =} polar (@dots{}) |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
26 ## Create a 2-D plot from polar coordinates @var{theta} and @var{rho}. |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
27 ## |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
28 ## If a single complex input @var{cplx} is given then the real part is used |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
29 ## for @var{theta} and the imaginary part is used for @var{rho}. |
2311 | 30 ## |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
31 ## The optional argument @var{fmt} specifies the line format in the same way |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
32 ## as @code{plot}. |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
33 ## |
17122
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17072
diff
changeset
|
34 ## 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:
17072
diff
changeset
|
35 ## rather than the current axes returned by @code{gca}. |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
12789
diff
changeset
|
36 ## |
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
12789
diff
changeset
|
37 ## The optional return value @var{h} is a graphics handle to the created plot. |
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
12789
diff
changeset
|
38 ## |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
39 ## Implementation Note: The polar axis is drawn using line and text objects |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
40 ## encapsulated in an hggroup. The hggroup properties are linked to the |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
41 ## original axes object such that altering an appearance property, for example |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
42 ## @code{fontname}, will update the polar axis. Two new properties are |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
43 ## added to the original axes--@code{rtick}, @code{ttick}--which replace |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
44 ## @code{xtick}, @code{ytick}. The first is a list of tick locations in the |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
45 ## radial (rho) direction; The second is a list of tick locations in the |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
46 ## angular (theta) direction specified in degrees, i.e., in the range 0--359. |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
47 ## @seealso{rose, compass, plot} |
3368 | 48 ## @end deftypefn |
4 | 49 |
2314 | 50 ## Author: jwe |
51 | |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
52 function h = polar (varargin) |
4 | 53 |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
54 [hax, varargin, nargs] = __plt_get_axis_arg__ ("polar", varargin{:}); |
7216 | 55 |
10730
390d93e20531
Plot commands now print usage information without errors
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
56 if (nargs < 1) |
14846
460a3c6d8bf1
maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents:
14237
diff
changeset
|
57 print_usage (); |
10730
390d93e20531
Plot commands now print usage information without errors
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
58 endif |
390d93e20531
Plot commands now print usage information without errors
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
59 |
17211
87ba70043bfc
Don't use ifelse in plot fcns to avoid unnecessary fcn evaluations.
Rik <rik@octave.org>
parents:
17190
diff
changeset
|
60 oldfig = []; |
17301
68bcac3c043a
Correct inversion accidentally introduced in cset 87ba70043bfc.
Rik <rik@octave.org>
parents:
17211
diff
changeset
|
61 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
|
62 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
|
63 endif |
7207 | 64 unwind_protect |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
65 hax = newplot (hax); |
3063 | 66 |
7207 | 67 if (nargs == 3) |
68 if (! ischar (varargin{3})) | |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
69 error ("polar: FMT argument must be a string"); |
7207 | 70 endif |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
71 htmp = __plr2__ (hax, varargin{:}); |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
72 maxr = max (varargin{2}(:)); |
7321 | 73 elseif (nargs == 2) |
7207 | 74 if (ischar (varargin{2})) |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
75 htmp = __plr1__ (hax, varargin{:}); |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
76 if (iscomplex (varargin{1})) |
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
77 maxr = max (imag (varargin{1})(:)); |
10549 | 78 else |
79 maxr = max (varargin{1}(:)); | |
80 endif | |
7207 | 81 else |
10549 | 82 fmt = ""; |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
83 htmp = __plr2__ (hax, varargin{:}, fmt); |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
84 maxr = max (varargin{2}(:)); |
7207 | 85 endif |
7321 | 86 elseif (nargs == 1) |
7207 | 87 fmt = ""; |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
88 htmp = __plr1__ (hax, varargin{:}, fmt); |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
89 if (iscomplex (varargin{1})) |
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
90 maxr = max (imag (varargin{1})(:)); |
7321 | 91 else |
10549 | 92 maxr = max (varargin{1}(:)); |
7321 | 93 endif |
7207 | 94 else |
95 print_usage (); | |
934 | 96 endif |
7207 | 97 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
98 ## FIXME: Should more gracefully handle "hold on" and not override props. |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
99 set (hax, "visible", "off", "plotboxaspectratio", [1, 1, 1], |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
100 "zlim", [-1 1]); |
7321 | 101 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
102 if (! isprop (hax, "rtick")) |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
103 addproperty ("rtick", hax, "data"); |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
104 endif |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
105 |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
106 ## calculate r(ho)tick from xtick |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
107 xtick = get (hax, "xtick"); |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
108 rtick = xtick(find (xtick > 0, 1):find (xtick >= maxr, 1)); |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
109 if (isempty (rtick)) |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
110 rtick = [0.5 1]; |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
111 endif |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
112 set (hax, "rtick", rtick); |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
113 |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
114 ## add t(heta)tick |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
115 if (! isprop (hax, "ttick")) |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
116 addproperty ("ttick", hax, "data"); |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
117 endif |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
118 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
119 ## theta(angular) ticks in degrees |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
120 set (hax, "ttick", 0:30:330); |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
121 |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
122 ## Create hggroup to hold text/line objects and attach listeners |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
123 hg = hggroup (hax, "tag", "polar_grid", "handlevisibility", "off"); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
124 __update_polar_grid__(hax, [], hg); |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
125 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
126 addlistener (hax, "rtick", {@__update_polar_grid__, hg}); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
127 addlistener (hax, "ttick", {@__update_polar_grid__, hg}); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
128 addlistener (hax, "color", {@__update_patch__, hg}); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
129 addlistener (hax, "fontangle", {@__update_text__, hg, "fontangle"}); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
130 addlistener (hax, "fontname", {@__update_text__, hg, "fontname"}); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
131 addlistener (hax, "fontsize", {@__update_text__, hg, "fontsize"}); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
132 addlistener (hax, "fontunits", {@__update_text__, hg, "fontunits"}); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
133 addlistener (hax, "fontweight", {@__update_text__, hg, "fontweight"}); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
134 addlistener (hax, "interpreter", {@__update_text__, hg, "interpreter"}); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
135 addlistener (hax, "layer", {@__update_layer__, hg}); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
136 addlistener (hax, "gridlinestyle", {@__update_lines__, hg,"gridlinestyle"}); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
137 addlistener (hax, "linewidth", {@__update_lines__, hg, "linewidth"}); |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
138 |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
139 unwind_protect_cleanup |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
140 if (! isempty (oldfig)) |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
141 set (0, "currentfigure", oldfig); |
934 | 142 endif |
7207 | 143 end_unwind_protect |
6302 | 144 |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
145 if (nargout > 0) |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
146 h = htmp; |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
147 endif |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
148 |
4 | 149 endfunction |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
150 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
151 function retval = __plr1__ (h, theta, fmt) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
152 |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
153 theta = theta(:); |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
154 if (iscomplex (theta)) |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
155 rho = imag (theta); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
156 theta = real (theta); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
157 else |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
158 rho = theta; |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
159 theta = (1:rows (rho))'; |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
160 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
161 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
162 retval = __plr2__ (h, theta, rho, fmt); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
163 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
164 endfunction |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
165 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
166 function retval = __plr2__ (h, theta, rho, fmt) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
167 |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
168 if (ndims (theta) > 2 || ndims (rho) > 2) |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
169 error ("polar: THETA and RHO must be 2-D objects"); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
170 endif |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
171 theta = real (theta); |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
172 rho = real (rho); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
173 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
174 if (isscalar (theta)) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
175 if (isscalar (rho)) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
176 x = rho * cos (theta); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
177 y = rho * sin (theta); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
178 retval = __plt__ ("polar", h, x, y, fmt); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
179 else |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
180 error ("polar: Can't plot constant THETA with varying RHO"); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
181 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
182 elseif (isvector (theta)) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
183 if (isvector (rho)) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
184 if (length (theta) != length (rho)) |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
185 error ("polar: THETA and RHO vector lengths must match"); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
186 endif |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
187 rho = rho(:); |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
188 theta = theta(:); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
189 x = rho .* cos (theta); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
190 y = rho .* sin (theta); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
191 retval = __plt__ ("polar", h, x, y, fmt); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
192 elseif (ismatrix (rho)) |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
193 theta = theta(:); |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
194 t_nr = rows (theta); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
195 [r_nr, r_nc] = size (rho); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
196 if (t_nr != r_nr) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
197 rho = rho'; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
198 r_nr = r_nc; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
199 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
200 if (t_nr != r_nr) |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
201 error ("polar: THETA vector and RHO matrix sizes must match"); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
202 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
203 x = diag (cos (theta)) * rho; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
204 y = diag (sin (theta)) * rho; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
205 retval = __plt__ ("polar", h, x, y, fmt); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
206 else |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
207 error ("polar: invalid data for plotting"); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
208 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
209 elseif (ismatrix (theta)) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
210 if (isvector (rho)) |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
211 rho = rho(:); |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
212 r_nr = rows (rho); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
213 [t_nr, t_nc] = size (theta); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
214 if (r_nr != t_nr) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
215 theta = theta'; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
216 t_nr = t_nc; |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
217 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
218 if (r_nr != t_nr) |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
219 error ("polar: THETA matrix and RHO vector sizes must match"); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
220 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
221 diag_r = diag (rho); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
222 x = diag_r * cos (theta); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
223 y = diag_r * sin (theta); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
224 retval = __plt__ ("polar", h, x, y, fmt); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
225 elseif (ismatrix (rho)) |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
226 if (! size_equal (rho, theta)) |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
227 error ("polar: THETA and RHO matrix dimensions must match"); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
228 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
229 x = rho .* cos (theta); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
230 y = rho .* sin (theta); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
231 retval = __plt__ ("polar", h, x, y, fmt); |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
232 else |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
233 error ("polar: invalid data for plotting"); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
234 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
235 else |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
236 error ("polar: invalid data for plotting"); |
9896
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
237 endif |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
238 |
1aeb39118764
convert some plot functions to subfunctions or make some them private
John W. Eaton <jwe@octave.org>
parents:
7321
diff
changeset
|
239 endfunction |
12789
482cc053281b
codesprint: Add 2 demos for polar.m
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
240 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
241 ## Callback functions for listeners |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
242 |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
243 function __update_text__ (hax, ~, hg, prop) |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
244 |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
245 kids = get (hg, "children"); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
246 idx = strcmp (get (kids, "type"), "text"); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
247 set (kids(idx).', prop, get (hax, prop)); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
248 |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
249 endfunction |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
250 |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
251 function __update_lines__ (hax, ~, hg, prop) |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
252 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
253 kids = get (hg, "children"); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
254 idx = strcmp (get (kids, "type"), "line"); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
255 lprop = prop; |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
256 if (strcmp (prop, "gridlinestyle")) |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
257 lprop = "linestyle"; |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
258 endif |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
259 set (kids(idx).', lprop, get (hax, prop)); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
260 |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
261 endfunction |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
262 |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
263 function __update_patch__ (hax, ~, hg) |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
264 |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
265 kids = get (hg, "children"); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
266 idx = strcmp (get (kids, "type"), "patch"); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
267 set (kids(idx).', "facecolor", get (hax, "color")); |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
268 |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
269 endfunction |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
270 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
271 function __update_layer__ (hax, ~, hg) |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
272 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
273 set (hg, "handlevisibility", "on"); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
274 kids = get (hax, "children"); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
275 if (strcmp (get (hax, "layer"), "bottom")) |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
276 set (hax, "children", [kids(kids != hg); hg]); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
277 else |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
278 set (hax, "children", [hg; kids(kids != hg)]); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
279 endif |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
280 set (hg, "handlevisibility", "off"); |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
281 |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
282 endfunction |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
283 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
284 function __update_polar_grid__ (hax, ~, hg) |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
285 |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
286 ## Delete existing polar grid |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
287 delete (get (hg, "children")); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
288 |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
289 rtick = unique (get (hax, "rtick")(:)'); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
290 rtick = rtick(rtick > 0); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
291 if (isempty (rtick)) |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
292 rtick = [0.5 1]; |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
293 endif |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
294 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
295 ttick = unique (get (hax, "ttick")(:)'); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
296 ttick = ttick(ttick >= 0); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
297 if (isempty (ttick)) |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
298 ttick = 0:30:330; |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
299 endif |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
300 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
301 lprops = {"linestyle", get(hax, "gridlinestyle"), ... |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
302 "linewidth", get(hax, "linewidth")}; |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
303 ## "fontunits" should be first because it affects "fontsize" property. |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
304 tprops(1:2:12) = {"fontunits", "fontangle", "fontname", "fontsize", ... |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
305 "fontweight", "interpreter"}; |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
306 tprops(2:2:12) = get (hax, tprops(1:2:12)); |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
307 |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
308 ## The number of points used for a circle |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
309 circle_points = 50; |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
310 t = linspace (0, 2*pi, circle_points)'; |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
311 x = kron (cos (t), rtick); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
312 y = kron (sin (t), rtick); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
313 |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
314 ## Draw colored disk under axes at Z-depth = -1 |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
315 patch (x(:,end), y(:,end), -ones (circle_points, 1), |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
316 get (hax, "color"), "parent", hg); |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
317 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
318 ## Plot dotted circles |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
319 line (x(:,1:end-1), y(:,1:end-1), lprops{:}, "parent", hg); |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
320 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
321 ## Outer circle is drawn solid |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
322 line (x(:,end), y(:,end), lprops{:}, "linestyle", "-", "parent", hg); |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
323 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
324 ## Add radial labels |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
325 [x, y] = pol2cart (0.42 * pi, rtick); |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
326 text (x, y, num2cell (rtick), "verticalalignment", "bottom", tprops{:}, |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
327 "parent", hg); |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
328 |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
329 ## add radial lines |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
330 s = rtick(end) * sin (ttick * pi / 180); |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
331 c = rtick(end) * cos (ttick * pi / 180); |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
332 x = [zeros(1, numel (ttick)); c]; |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
333 y = [zeros(1, numel (ttick)); s]; |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
334 line (x, y, "linestyle", ":", lprops{:}, "parent", hg); |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
335 |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
336 ## add angular labels |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
337 tticklabel = num2cell (ttick); |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
338 ## FIXME: This tm factor does not work as fontsize increases |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
339 tm = 1.08; |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
340 text (tm * c, tm * s, tticklabel, "horizontalalignment", "center", |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
341 tprops{:}, "parent", hg); |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
342 |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
343 lim = 1.1 * rtick(end); |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
344 set (hax, "xlim", [-lim, lim], "ylim", [-lim, lim]); |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
345 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
346 ## Put polar grid behind or ahead of plot |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
347 __update_layer__ (hax, [], hg); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
348 |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
349 endfunction |
12789
482cc053281b
codesprint: Add 2 demos for polar.m
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
350 |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
351 |
12789
482cc053281b
codesprint: Add 2 demos for polar.m
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
352 %!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
|
353 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
354 %! theta = linspace (0,2*pi,1000); |
12789
482cc053281b
codesprint: Add 2 demos for polar.m
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
355 %! rho = sin (7*theta); |
482cc053281b
codesprint: Add 2 demos for polar.m
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
356 %! polar (theta, rho); |
17190
df4c4b7708a4
Add titles and clean-up plotting %!demos.
Rik <rik@octave.org>
parents:
17122
diff
changeset
|
357 %! title ('polar() plot'); |
12789
482cc053281b
codesprint: Add 2 demos for polar.m
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
358 |
482cc053281b
codesprint: Add 2 demos for polar.m
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
359 %!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
|
360 %! clf; |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
361 %! theta = linspace (0,2*pi,1000); |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
362 %! cplx = theta + i*sin (7*theta); |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
363 %! polar (cplx, 'g'); |
17190
df4c4b7708a4
Add titles and clean-up plotting %!demos.
Rik <rik@octave.org>
parents:
17122
diff
changeset
|
364 %! title ('polar() plot of complex data'); |
17072
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
365 |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
366 %!demo |
22fa8c77b92d
polar.m, rose.m: Overhaul to use new __plt_get_axis_arg__.
Rik <rik@octave.org>
parents:
16814
diff
changeset
|
367 %! clf; |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
368 %! theta = linspace (0,2*pi,1000); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
369 %! rho = sin (2*theta).*cos (2*theta); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
370 %! polar (theta, rho, '--r'); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
371 %! set (gca, "rtick", 0.1:0.1:0.6, "ttick", 0:20:340); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
372 %! title ('polar() plot with finer grid'); |
12789
482cc053281b
codesprint: Add 2 demos for polar.m
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
373 |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
374 %!demo |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
375 %! clf; |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
376 %! theta = linspace (0,2*pi,1000); |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
377 %! rho = sin (2*theta).*cos (2*theta); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
378 %! polar (theta, rho, '--b'); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
379 %! set (gca, "fontsize", 12, "linewidth", 2, "color", [0.8 0.8 0.8]); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
380 %! title ('polar() plot with modified axis appearance'); |
18910
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
381 |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
382 %!demo |
b5b73959907f
polar.m: add circular theta/rho axes (bug 39495).
Andreas Weber <andy.weber.aw@gmail.com>
parents:
17744
diff
changeset
|
383 %! clf; |
18916
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
384 %! theta = linspace (0,8*pi,1000); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
385 %! rho = sin (5/4*theta); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
386 %! polar (theta, rho); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
387 %! set (gca, "rtick", 0.2:0.2:1); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
388 %! title ('polar() plot'); |
56bff71de2ca
polar.m: Link polar grid with axes properties (bug #39495).
Rik <rik@octave.org>
parents:
18910
diff
changeset
|
389 |