Mercurial > hg > octave-nkf
annotate scripts/plot/pbaspect.m @ 10218:ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
author | Ben Abbott <bpabbott@mac.com> |
---|---|
date | Thu, 28 Jan 2010 20:59:31 -0500 |
parents | |
children | fbd7843974fa |
rev | line source |
---|---|
10218
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
1 ## Copyright (C) 2010 Ben Abbott |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
2 ## |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
3 ## This program is free software; you can redistribute it and/or modify |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
4 ## it under the terms of the GNU General Public License as published by |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
5 ## the Free Software Foundation; either version 2 of the License, or |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
6 ## (at your option) any later version. |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
7 ## |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
8 ## This program is distributed in the hope that it will be useful, |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
9 ## but WITHOUT ANY WARRANTY; without even the implied warranty of |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
10 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
11 ## GNU General Public License for more details. |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
12 ## |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
13 ## You should have received a copy of the GNU General Public License |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
14 ## along with Octave; see the file COPYING. If not, see |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
15 ## <http://www.gnu.org/licenses/>. |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
16 |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
17 ## -*- texinfo -*- |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
18 ## @deftypefn {Function File} {} pbaspect (@var{plot_box_aspect_ratio}) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
19 ## Set the plot box aspect ratio of the current axes. The aspect ratio |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
20 ## is a normalized 3 element vector representing the rendered lengths of |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
21 ## the x, y, and z-axes. |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
22 ## @deftypefnx {Function File} {@var{plot_box_aspect_ratio} =} pbaspect ( ) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
23 ## Return the plot box aspect ratio of the current axes. |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
24 ## @deftypefnx {Function File} {} pbaspect (@var{mode}) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
25 ## Set the plot box aspect ratio mode of the current axes. |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
26 ## @deftypefnx {Function File} {@var{plot_box_aspect_ratio_mode} =} pbaspect ("mode") |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
27 ## Return the plot box aspect ratio mode of the current axes. |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
28 ## @deftypefnx {Function File} {} pbaspect (@var{hax}, @dots{}) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
29 ## Uses the axes, with handle @var{hax}, instead of the current axes. |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
30 ## |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
31 ## @seealso{axis, daspect, xlim, ylim, zlim} |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
32 ## @end deftypefn |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
33 |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
34 ## Author: Ben Abbott <bpabbott@mac.com> |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
35 ## Created: 2010-01-26 |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
36 |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
37 function varargout = pbaspect (varargin) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
38 |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
39 hax = gca (); |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
40 |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
41 if (nargin > 0) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
42 if (isscalar (varargin{1}) && ishandle (varargin{1})) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
43 hax = varargin{1}; |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
44 varargin = varargin(2:end); |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
45 endif |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
46 endif |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
47 if (numel (varargin) > 0) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
48 if (numel (varargin) == 1) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
49 if (ischar (varargin{1}) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
50 && any (strcmpi (varargin{1}, {"mode", "manual", "auto"}))) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
51 switch varargin{1} |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
52 case {"mode"} |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
53 if (nargout < 2) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
54 varargout{1} = get (hax, "plotboxaspectratiomode"); |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
55 return |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
56 else |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
57 error ("pbaspect: only one output is allowed.") |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
58 end |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
59 case {"manual"} |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
60 set (hax, "plotboxaspectratiomode", "manual"); |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
61 case {"auto"} |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
62 set (hax, "plotboxaspectratiomode", "auto"); |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
63 endswitch |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
64 elseif (isreal (varargin{1}) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
65 && any (numel (varargin{1}) == [2 3])) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
66 set (hax, "plotboxaspectratio", varargin{1}) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
67 else |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
68 error ("pbaspect: invalid input.") |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
69 endif |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
70 elseif (numel (varargin) > 1) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
71 error ("pbaspect: too many inputs.") |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
72 endif |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
73 elseif (nargout == 0) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
74 print_usage (); |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
75 end |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
76 |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
77 if (nargout == 1) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
78 varargout{1} = get (hax, "plotboxaspectratio"); |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
79 elseif (nargout > 1) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
80 error ("pbaspect: only one output is allowed.") |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
81 end |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
82 |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
83 endfunction |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
84 |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
85 %!demo |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
86 %! x = 0:0.01:4; |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
87 %! clf |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
88 %! plot (x, cos (x), x, sin (x)) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
89 %! pbaspect ([1 1 1]) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
90 %! title ('plot box should be square') |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
91 |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
92 %!demo |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
93 %! x = 0:0.01:4; |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
94 %! clf |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
95 %! plot (x, cos (x), x, sin (x)) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
96 %! pbaspect ([2 1 1]) |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
97 %! title ('plot box aspect ratio should be 2x1') |
ce94aaa71a4f
daspect.m, pbaspect.m: New functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff
changeset
|
98 |