Mercurial > hg > octave-nkf
annotate scripts/plot/plotyy.m @ 14237:11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Add clf() to all demos using plot features to get reproducibility.
Use 64 as input to all colormaps (jet (64)) to get reproducibility.
* bicubic.m, cell2mat.m, celldisp.m, cplxpair.m, interp1.m, interp2.m,
interpft.m, interpn.m, profile.m, profshow.m, convhull.m, delaunay.m,
griddata.m, inpolygon.m, voronoi.m, autumn.m, bone.m, contrast.m, cool.m,
copper.m, flag.m, gmap40.m, gray.m, hot.m, hsv.m, image.m, imshow.m, jet.m,
ocean.m, pink.m, prism.m, rainbow.m, spring.m, summer.m, white.m, winter.m,
condest.m, onenormest.m, axis.m, clabel.m, colorbar.m, comet.m, comet3.m,
compass.m, contour.m, contour3.m, contourf.m, cylinder.m, daspect.m,
ellipsoid.m, errorbar.m, ezcontour.m, ezcontourf.m, ezmesh.m, ezmeshc.m,
ezplot.m, ezplot3.m, ezpolar.m, ezsurf.m, ezsurfc.m, feather.m, fill.m,
fplot.m, grid.m, hold.m, isosurface.m, legend.m, loglog.m, loglogerr.m,
pareto.m, patch.m, pbaspect.m, pcolor.m, pie.m, pie3.m, plot3.m, plotmatrix.m,
plotyy.m, polar.m, quiver.m, quiver3.m, rectangle.m, refreshdata.m, ribbon.m,
rose.m, scatter.m, scatter3.m, semilogx.m, semilogxerr.m, semilogy.m,
semilogyerr.m, shading.m, slice.m, sombrero.m, stairs.m, stem.m, stem3.m,
subplot.m, surf.m, surfc.m, surfl.m, surfnorm.m, text.m, title.m, trimesh.m,
triplot.m, trisurf.m, uigetdir.m, uigetfile.m, uimenu.m, uiputfile.m,
waitbar.m, xlim.m, ylim.m, zlim.m, mkpp.m, pchip.m, polyaffine.m, spline.m,
bicgstab.m, cgs.m, gplot.m, pcg.m, pcr.m, treeplot.m, strtok.m, demo.m,
example.m, rundemos.m, speed.m, test.m, calendar.m, datestr.m, datetick.m,
weekday.m: Revamp %!demos to use Octave coding conventions on spacing, etc.
author | Rik <octave@nomad.inbox5.com> |
---|---|
date | Fri, 20 Jan 2012 12:59:53 -0800 |
parents | 72c96de7a403 |
children | 4506eade9f04 |
rev | line source |
---|---|
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
13216
diff
changeset
|
1 ## Copyright (C) 2007-2012 David Bateman |
7195 | 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 | |
7 ## the Free Software Foundation; either version 3 of the License, or (at | |
8 ## your option) any later version. | |
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 | |
16 ## along with Octave; see the file COPYING. If not, see | |
17 ## <http://www.gnu.org/licenses/>. | |
18 | |
19 ## -*- texinfo -*- | |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
20 ## @deftypefn {Function File} {} plotyy (@var{x1}, @var{y1}, @var{x2}, @var{y2}) |
7195 | 21 ## @deftypefnx {Function File} {} plotyy (@dots{}, @var{fun}) |
22 ## @deftypefnx {Function File} {} plotyy (@dots{}, @var{fun1}, @var{fun2}) | |
23 ## @deftypefnx {Function File} {} plotyy (@var{h}, @dots{}) | |
24 ## @deftypefnx {Function File} {[@var{ax}, @var{h1}, @var{h2}] =} plotyy (@dots{}) | |
12575
d0b799dafede
Grammarcheck files for 3.4.1 release.
Rik <octave@nomad.inbox5.com>
parents:
12437
diff
changeset
|
25 ## Plot two sets of data with independent y-axes. The arguments @var{x1} and |
7195 | 26 ## @var{y1} define the arguments for the first plot and @var{x1} and @var{y2} |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
27 ## for the second. |
7195 | 28 ## |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
29 ## By default the arguments are evaluated with |
9040
dbd0c77e575e
Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
30 ## @code{feval (@@plot, @var{x}, @var{y})}. However the type of plot can be |
7195 | 31 ## modified with the @var{fun} argument, in which case the plots are |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
32 ## generated by @code{feval (@var{fun}, @var{x}, @var{y})}. @var{fun} can be |
7195 | 33 ## a function handle, an inline function or a string of a function name. |
34 ## | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
35 ## The function to use for each of the plots can be independently defined |
7195 | 36 ## with @var{fun1} and @var{fun2}. |
37 ## | |
38 ## If given, @var{h} defines the principal axis in which to plot the @var{x1} | |
9040
dbd0c77e575e
Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
39 ## and @var{y1} data. The return value @var{ax} is a two element vector with |
dbd0c77e575e
Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
40 ## the axis handles of the two plots. @var{h1} and @var{h2} are handles to |
7195 | 41 ## the objects generated by the plot commands. |
42 ## | |
43 ## @example | |
44 ## @group | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
45 ## x = 0:0.1:2*pi; |
7195 | 46 ## y1 = sin (x); |
7196 | 47 ## y2 = exp (x - 1); |
48 ## ax = plotyy (x, y1, x - 1, y2, @@plot, @@semilogy); | |
7195 | 49 ## xlabel ("X"); |
50 ## ylabel (ax(1), "Axis 1"); | |
51 ## ylabel (ax(2), "Axis 2"); | |
52 ## @end group | |
53 ## @end example | |
54 ## @end deftypefn | |
55 | |
56 function [Ax, H1, H2] = plotyy (varargin) | |
57 | |
7665
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
58 ## Don't use __plt_get_axis_arg__ here as ax is a two vector for plotyy |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
59 if (nargin > 1 && length (varargin{1}) == 2 && ishandle(varargin{1}(1)) |
11149
fe3c3dfc07eb
style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents:
10950
diff
changeset
|
60 && ishandle(varargin{1}(2)) |
fe3c3dfc07eb
style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents:
10950
diff
changeset
|
61 && all (floor (varargin{1}) != varargin{1})) |
7665
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
62 obj1 = get (varargin{1}(1)); |
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
63 obj2 = get (varargin{1}(2)); |
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
64 if (strcmp (obj1.type, "axes") || strcmp (obj2.type, "axes")) |
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
65 ax = [obj1, obj2]; |
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
66 varargin(1) = []; |
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
67 if (isempty (varargin)) |
10549 | 68 varargin = {}; |
7665
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
69 endif |
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
70 else |
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
71 error ("plotyy: expecting first argument to be axes handle"); |
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
72 endif |
13033
d0dccc6dd4e7
plotyy.m: Always restore current axes when done.
Ben Abbott <bpabbott@mac.com>
parents:
12575
diff
changeset
|
73 oldh = gca (); |
7665
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
74 else |
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
75 f = get (0, "currentfigure"); |
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
76 if (isempty (f)) |
9346
d50c3d8efe71
plotyy.m: Correct behavior when there is no currentfigure.
Ben Abbott <bpabbott@mac.com>
parents:
9040
diff
changeset
|
77 f = figure (); |
d50c3d8efe71
plotyy.m: Correct behavior when there is no currentfigure.
Ben Abbott <bpabbott@mac.com>
parents:
9040
diff
changeset
|
78 endif |
9349
93664cbb732c
plotyy.m: Fix compatibility with subplot.
Ben Abbott <bpabbott@mac.com>
parents:
9346
diff
changeset
|
79 ca = get (f, "currentaxes"); |
93664cbb732c
plotyy.m: Fix compatibility with subplot.
Ben Abbott <bpabbott@mac.com>
parents:
9346
diff
changeset
|
80 if (isempty (ca)) |
93664cbb732c
plotyy.m: Fix compatibility with subplot.
Ben Abbott <bpabbott@mac.com>
parents:
9346
diff
changeset
|
81 ax = []; |
13216 | 82 elseif (ishandle (ca) && isprop (ca, "__plotyy_axes__")) |
9349
93664cbb732c
plotyy.m: Fix compatibility with subplot.
Ben Abbott <bpabbott@mac.com>
parents:
9346
diff
changeset
|
83 ax = get (ca, "__plotyy_axes__"); |
93664cbb732c
plotyy.m: Fix compatibility with subplot.
Ben Abbott <bpabbott@mac.com>
parents:
9346
diff
changeset
|
84 else |
93664cbb732c
plotyy.m: Fix compatibility with subplot.
Ben Abbott <bpabbott@mac.com>
parents:
9346
diff
changeset
|
85 ax = ca; |
93664cbb732c
plotyy.m: Fix compatibility with subplot.
Ben Abbott <bpabbott@mac.com>
parents:
9346
diff
changeset
|
86 endif |
9346
d50c3d8efe71
plotyy.m: Correct behavior when there is no currentfigure.
Ben Abbott <bpabbott@mac.com>
parents:
9040
diff
changeset
|
87 if (length (ax) > 2) |
d50c3d8efe71
plotyy.m: Correct behavior when there is no currentfigure.
Ben Abbott <bpabbott@mac.com>
parents:
9040
diff
changeset
|
88 for i = 3 : length (ax) |
d50c3d8efe71
plotyy.m: Correct behavior when there is no currentfigure.
Ben Abbott <bpabbott@mac.com>
parents:
9040
diff
changeset
|
89 delete (ax (i)); |
d50c3d8efe71
plotyy.m: Correct behavior when there is no currentfigure.
Ben Abbott <bpabbott@mac.com>
parents:
9040
diff
changeset
|
90 endfor |
d50c3d8efe71
plotyy.m: Correct behavior when there is no currentfigure.
Ben Abbott <bpabbott@mac.com>
parents:
9040
diff
changeset
|
91 ax = ax(1:2); |
d50c3d8efe71
plotyy.m: Correct behavior when there is no currentfigure.
Ben Abbott <bpabbott@mac.com>
parents:
9040
diff
changeset
|
92 elseif (length (ax) == 1) |
d50c3d8efe71
plotyy.m: Correct behavior when there is no currentfigure.
Ben Abbott <bpabbott@mac.com>
parents:
9040
diff
changeset
|
93 ax(2) = axes (); |
d50c3d8efe71
plotyy.m: Correct behavior when there is no currentfigure.
Ben Abbott <bpabbott@mac.com>
parents:
9040
diff
changeset
|
94 elseif (isempty (ax)) |
7665
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
95 ax(1) = axes (); |
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
96 ax(2) = axes (); |
13033
d0dccc6dd4e7
plotyy.m: Always restore current axes when done.
Ben Abbott <bpabbott@mac.com>
parents:
12575
diff
changeset
|
97 ca = ax(2); |
7665
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
98 endif |
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
99 if (nargin < 2) |
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
100 varargin = {}; |
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
101 endif |
13033
d0dccc6dd4e7
plotyy.m: Always restore current axes when done.
Ben Abbott <bpabbott@mac.com>
parents:
12575
diff
changeset
|
102 oldh = ca; |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
103 endif |
7215 | 104 |
105 if (nargin < 4) | |
106 print_usage (); | |
107 endif | |
7216 | 108 |
7215 | 109 unwind_protect |
110 [ax, h1, h2] = __plotyy__ (ax, varargin{:}); | |
111 unwind_protect_cleanup | |
8237
52f2fba4f3f8
Test that an axis handle actually is one before setting it in plotyy
David Bateman <dbateman@free.fr>
parents:
8208
diff
changeset
|
112 ## Only change back to the old axis if we didn't delete it |
52f2fba4f3f8
Test that an axis handle actually is one before setting it in plotyy
David Bateman <dbateman@free.fr>
parents:
8208
diff
changeset
|
113 if (ishandle(oldh) && strcmp (get (oldh, "type"), "axes")) |
52f2fba4f3f8
Test that an axis handle actually is one before setting it in plotyy
David Bateman <dbateman@free.fr>
parents:
8208
diff
changeset
|
114 axes (oldh); |
52f2fba4f3f8
Test that an axis handle actually is one before setting it in plotyy
David Bateman <dbateman@free.fr>
parents:
8208
diff
changeset
|
115 endif |
7215 | 116 end_unwind_protect |
7195 | 117 |
118 if (nargout > 0) | |
119 Ax = ax; | |
120 H1 = h1; | |
121 H2 = h2; | |
122 endif | |
7196 | 123 |
7195 | 124 endfunction |
125 | |
126 function [ax, h1, h2] = __plotyy__ (ax, x1, y1, x2, y2, varargin) | |
127 if (nargin > 5) | |
128 fun1 = varargin{1}; | |
129 else | |
130 fun1 = @plot; | |
131 endif | |
132 if (nargin > 6) | |
133 fun2 = varargin{2}; | |
134 else | |
135 fun2 = fun1; | |
136 endif | |
137 | |
138 xlim = [min([x1(:); x2(:)]), max([x1(:); x2(:)])]; | |
139 | |
8237
52f2fba4f3f8
Test that an axis handle actually is one before setting it in plotyy
David Bateman <dbateman@free.fr>
parents:
8208
diff
changeset
|
140 if (ishandle(ax(1)) && strcmp (get (ax(1), "type"), "axes")) |
52f2fba4f3f8
Test that an axis handle actually is one before setting it in plotyy
David Bateman <dbateman@free.fr>
parents:
8208
diff
changeset
|
141 axes (ax(1)); |
52f2fba4f3f8
Test that an axis handle actually is one before setting it in plotyy
David Bateman <dbateman@free.fr>
parents:
8208
diff
changeset
|
142 else |
52f2fba4f3f8
Test that an axis handle actually is one before setting it in plotyy
David Bateman <dbateman@free.fr>
parents:
8208
diff
changeset
|
143 ax(1) = axes (); |
52f2fba4f3f8
Test that an axis handle actually is one before setting it in plotyy
David Bateman <dbateman@free.fr>
parents:
8208
diff
changeset
|
144 endif |
7665
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
145 newplot (); |
7195 | 146 h1 = feval (fun1, x1, y1); |
7220 | 147 |
148 set (ax(1), "ycolor", getcolor (h1(1))); | |
7195 | 149 set (ax(1), "xlim", xlim); |
10136
ee18258bc002
Also treat white figure and axes color properties
David Bateman <dbateman@free.fr>
parents:
9353
diff
changeset
|
150 set (ax(1), "color", "none"); |
7195 | 151 |
152 cf = gcf (); | |
153 set (cf, "nextplot", "add"); | |
8237
52f2fba4f3f8
Test that an axis handle actually is one before setting it in plotyy
David Bateman <dbateman@free.fr>
parents:
8208
diff
changeset
|
154 |
52f2fba4f3f8
Test that an axis handle actually is one before setting it in plotyy
David Bateman <dbateman@free.fr>
parents:
8208
diff
changeset
|
155 if (ishandle(ax(2)) && strcmp (get (ax(2), "type"), "axes")) |
52f2fba4f3f8
Test that an axis handle actually is one before setting it in plotyy
David Bateman <dbateman@free.fr>
parents:
8208
diff
changeset
|
156 axes (ax(2)); |
52f2fba4f3f8
Test that an axis handle actually is one before setting it in plotyy
David Bateman <dbateman@free.fr>
parents:
8208
diff
changeset
|
157 else |
52f2fba4f3f8
Test that an axis handle actually is one before setting it in plotyy
David Bateman <dbateman@free.fr>
parents:
8208
diff
changeset
|
158 ax(2) = axes (); |
52f2fba4f3f8
Test that an axis handle actually is one before setting it in plotyy
David Bateman <dbateman@free.fr>
parents:
8208
diff
changeset
|
159 endif |
7665
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
160 newplot (); |
aead4b9d026b
Fix axis handle treatment in plotyy
David Bateman <dbateman@free.fr>
parents:
7314
diff
changeset
|
161 |
7195 | 162 colors = get (ax(1), "colororder"); |
163 set (ax(2), "colororder", [colors(2:end,:); colors(1,:)]); | |
164 | |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
165 if (strcmp (get (ax(1), "autopos_tag"), "subplot")) |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
166 set (ax(2), "autopos_tag", "subplot"); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
167 else |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
168 set (ax, "activepositionproperty", "position"); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
169 endif |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
170 |
7195 | 171 h2 = feval (fun2, x2, y2); |
7206 | 172 set (ax(2), "yaxislocation", "right"); |
7220 | 173 set (ax(2), "ycolor", getcolor (h2(1))); |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
174 |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
175 |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
176 if (strcmp (get(ax(1), "activepositionproperty"), "position")) |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
177 set (ax(2), "position", get (ax(1), "position")); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
178 else |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
179 set (ax(2), "outerposition", get (ax(1), "outerposition")); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
180 set (ax(2), "looseinset", get (ax(1), "looseinset")); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
181 endif |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
182 |
7195 | 183 set (ax(2), "xlim", xlim); |
7240 | 184 set (ax(2), "color", "none"); |
12128
e916491cbb99
plotyy.m: Set box property to off to allow both y-axes colors to be visible for OpenGL backends.
Ben Abbott <bpabbott@mac.com>
parents:
11589
diff
changeset
|
185 set (ax(2), "box", "off"); |
8208 | 186 |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
187 ## Add invisible text objects that when destroyed, |
8208 | 188 ## also remove the other axis |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
189 t1 = text (0, 0, "", "parent", ax(1), "tag", "plotyy", |
10549 | 190 "handlevisibility", "off", "visible", "off", |
191 "xliminclude", "off", "yliminclude", "off"); | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
192 t2 = text (0, 0, "", "parent", ax(2), "tag", "plotyy", |
10549 | 193 "handlevisibility", "off", "visible", "off", |
194 "xliminclude", "off", "yliminclude", "off"); | |
8208 | 195 |
196 set (t1, "deletefcn", {@deleteplotyy, ax(2), t2}); | |
197 set (t2, "deletefcn", {@deleteplotyy, ax(1), t1}); | |
198 | |
199 addlistener (ax(1), "position", {@update_position, ax(2)}); | |
200 addlistener (ax(2), "position", {@update_position, ax(1)}); | |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
201 addlistener (ax(1), "outerposition", {@update_position, ax(2)}); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
202 addlistener (ax(2), "outerposition", {@update_position, ax(1)}); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
203 addlistener (ax(1), "looseinset", {@update_position, ax(2)}); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
204 addlistener (ax(2), "looseinset", {@update_position, ax(1)}); |
8208 | 205 addlistener (ax(1), "view", {@update_position, ax(2)}); |
206 addlistener (ax(2), "view", {@update_position, ax(1)}); | |
10226
2884758e265b
Replace dataaspectratio props with plotboxaspectratio props.
Ben Abbott <bpabbott@mac.com>
parents:
10136
diff
changeset
|
207 addlistener (ax(1), "plotboxaspectratio", {@update_position, ax(2)}); |
2884758e265b
Replace dataaspectratio props with plotboxaspectratio props.
Ben Abbott <bpabbott@mac.com>
parents:
10136
diff
changeset
|
208 addlistener (ax(2), "plotboxaspectratio", {@update_position, ax(1)}); |
10529
7147078550fe
plotyy.m: Add listener for dataaspectratiomode.
Ben Abbott <bpabbott@mac.com>
parents:
10226
diff
changeset
|
209 addlistener (ax(1), "plotboxaspectratiomode", {@update_position, ax(2)}); |
7147078550fe
plotyy.m: Add listener for dataaspectratiomode.
Ben Abbott <bpabbott@mac.com>
parents:
10226
diff
changeset
|
210 addlistener (ax(2), "plotboxaspectratiomode", {@update_position, ax(1)}); |
8208 | 211 |
9349
93664cbb732c
plotyy.m: Fix compatibility with subplot.
Ben Abbott <bpabbott@mac.com>
parents:
9346
diff
changeset
|
212 ## Store the axes handles for the sister axes. |
13216 | 213 if (ishandle (ax(1)) && ! isprop (ax(1), "__plotyy_axes__")) |
10950
c9786e03670c
Don't create __plotyy_axes__ properties in plotyy if they exist (Bug #30977)
David Bateman <dbateman@free.fr>
parents:
10949
diff
changeset
|
214 addproperty ("__plotyy_axes__", ax(1), "data", ax); |
13216 | 215 elseif (ishandle (ax(1))) |
10950
c9786e03670c
Don't create __plotyy_axes__ properties in plotyy if they exist (Bug #30977)
David Bateman <dbateman@free.fr>
parents:
10949
diff
changeset
|
216 set (ax(1), "__plotyy_axes__", ax); |
13216 | 217 else |
218 error ("plotyy.m: This shouldn't happen. File a bug report.") | |
219 endif | |
220 if (ishandle (ax(2)) && ! isprop (ax(2), "__plotyy_axes__")) | |
10950
c9786e03670c
Don't create __plotyy_axes__ properties in plotyy if they exist (Bug #30977)
David Bateman <dbateman@free.fr>
parents:
10949
diff
changeset
|
221 addproperty ("__plotyy_axes__", ax(2), "data", ax); |
13216 | 222 elseif (ishandle (ax(2))) |
10950
c9786e03670c
Don't create __plotyy_axes__ properties in plotyy if they exist (Bug #30977)
David Bateman <dbateman@free.fr>
parents:
10949
diff
changeset
|
223 set (ax(2), "__plotyy_axes__", ax); |
13216 | 224 else |
225 error ("plotyy.m: This shouldn't happen. File a bug report.") | |
226 endif | |
8208 | 227 endfunction |
228 | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
229 |
8208 | 230 %!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
|
231 %! clf; |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
232 %! x = 0:0.1:2*pi; |
8208 | 233 %! y1 = sin (x); |
234 %! y2 = exp (x - 1); | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
235 %! ax = plotyy (x,y1, x-1,y2, @plot, @semilogy); |
8208 | 236 %! xlabel ("X"); |
237 %! ylabel (ax(1), "Axis 1"); | |
238 %! ylabel (ax(2), "Axis 2"); | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
239 %! axes (ax(1)); |
12437
a754c2d8a13f
Modify demo scripts to allow conventient conversion to Matlab compatible syntax.
Ben Abbott <bpabbott@mac.com>
parents:
12128
diff
changeset
|
240 %! text (0.5, 0.5, "Left Axis", ... |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
241 %! "color", [0 0 1], "horizontalalignment", "center"); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
242 %! axes (ax(2)); |
12437
a754c2d8a13f
Modify demo scripts to allow conventient conversion to Matlab compatible syntax.
Ben Abbott <bpabbott@mac.com>
parents:
12128
diff
changeset
|
243 %! text (4.5, 80, "Right Axis", ... |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
244 %! "color", [0 0.5 0], "horizontalalignment", "center"); |
8208 | 245 |
9349
93664cbb732c
plotyy.m: Fix compatibility with subplot.
Ben Abbott <bpabbott@mac.com>
parents:
9346
diff
changeset
|
246 %!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
|
247 %! clf; |
9349
93664cbb732c
plotyy.m: Fix compatibility with subplot.
Ben Abbott <bpabbott@mac.com>
parents:
9346
diff
changeset
|
248 %! x = linspace (-1, 1, 201); |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
249 %! subplot (2,2,1); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
250 %! plotyy (x,sin(pi*x), x,10*cos(pi*x)); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
251 %! subplot (2,2,2); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
252 %! surf (peaks (25)); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
253 %! subplot (2,2,3); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
254 %! contour (peaks (25)); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
255 %! subplot (2,2,4); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
256 %! plotyy (x,10*sin(2*pi*x), x,cos(2*pi*x)); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
257 %! axis square; |
9349
93664cbb732c
plotyy.m: Fix compatibility with subplot.
Ben Abbott <bpabbott@mac.com>
parents:
9346
diff
changeset
|
258 |
13033
d0dccc6dd4e7
plotyy.m: Always restore current axes when done.
Ben Abbott <bpabbott@mac.com>
parents:
12575
diff
changeset
|
259 %!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
|
260 %! clf; |
13033
d0dccc6dd4e7
plotyy.m: Always restore current axes when done.
Ben Abbott <bpabbott@mac.com>
parents:
12575
diff
changeset
|
261 %! x = linspace (-1, 1, 201); |
d0dccc6dd4e7
plotyy.m: Always restore current axes when done.
Ben Abbott <bpabbott@mac.com>
parents:
12575
diff
changeset
|
262 %! hax = plotyy (x, sin(pi*x), x, cos(pi*x)); |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
263 %! ylabel ("Blue on the Left"); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
264 %! ylabel (hax(2), "Green on the Right"); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
265 %! xlabel ("xlabel"); |
13033
d0dccc6dd4e7
plotyy.m: Always restore current axes when done.
Ben Abbott <bpabbott@mac.com>
parents:
12575
diff
changeset
|
266 |
8208 | 267 function deleteplotyy (h, d, ax2, t2) |
11149
fe3c3dfc07eb
style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents:
10950
diff
changeset
|
268 if (ishandle (ax2) && strcmp (get (ax2, "type"), "axes") |
fe3c3dfc07eb
style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents:
10950
diff
changeset
|
269 && (isempty (gcbf()) || strcmp (get (gcbf(), "beingdeleted"),"off")) |
fe3c3dfc07eb
style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents:
10950
diff
changeset
|
270 && strcmp (get (ax2, "beingdeleted"), "off")) |
8208 | 271 set (t2, "deletefcn", []); |
272 delete (ax2); | |
273 endif | |
274 endfunction | |
275 | |
276 function update_position (h, d, ax2) | |
277 persistent recursion = false; | |
278 | |
279 ## Don't allow recursion | |
280 if (! recursion) | |
281 unwind_protect | |
282 recursion = true; | |
283 view = get (h, "view"); | |
284 oldview = get (ax2, "view"); | |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
285 plotboxaspectratio = get (h, "plotboxaspectratio"); |
10226
2884758e265b
Replace dataaspectratio props with plotboxaspectratio props.
Ben Abbott <bpabbott@mac.com>
parents:
10136
diff
changeset
|
286 oldplotboxaspectratio = get (ax2, "plotboxaspectratio"); |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
287 plotboxaspectratiomode = get (h, "plotboxaspectratiomode"); |
10226
2884758e265b
Replace dataaspectratio props with plotboxaspectratio props.
Ben Abbott <bpabbott@mac.com>
parents:
10136
diff
changeset
|
288 oldplotboxaspectratiomode = get (ax2, "plotboxaspectratiomode"); |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
289 |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
290 if (strcmp (get(h, "activepositionproperty"), "position")) |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
291 position = get (h, "position"); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
292 oldposition = get (ax2, "position"); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
293 if (! (isequal (position, oldposition) && isequal (view, oldview))) |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
294 set (ax2, "position", position, "view", view); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
295 endif |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
296 else |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
297 outerposition = get (h, "outerposition"); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
298 oldouterposition = get (ax2, "outerposition"); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
299 if (! (isequal (outerposition, oldouterposition) && isequal (view, oldview))) |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
300 set (ax2, "outerposition", outerposition, "view", view); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
301 endif |
9353
335dc62068a8
plotyy.m: Consider dataaspectratiomode before changing dataaspectratio.
Ben Abbott <bpabbott@mac.com>
parents:
9349
diff
changeset
|
302 endif |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
303 |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
304 if (! (isequal (plotboxaspectratio, oldplotboxaspectratio) |
10549 | 305 && isequal (plotboxaspectratiomode, oldplotboxaspectratiomode))) |
306 set (ax2, "plotboxaspectratio", plotboxaspectratio); | |
307 set (ax2, "plotboxaspectratiomode", plotboxaspectratiomode); | |
8208 | 308 endif |
309 unwind_protect_cleanup | |
310 recursion = false; | |
311 end_unwind_protect | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
312 endif |
7195 | 313 endfunction |
7220 | 314 |
315 function color = getcolor (ax) | |
316 obj = get (ax); | |
317 if (isfield (obj, "color")) | |
318 color = obj.color; | |
319 elseif (isfield (obj, "facecolor") && ! ischar (obj.facecolor)) | |
320 color = obj.facecolor; | |
321 elseif (isfield (obj, "edgecolor") && ! ischar (obj.edgecolor)) | |
322 color = obj.edgecolor; | |
323 else | |
324 color = [0, 0, 0]; | |
325 endif | |
326 endfunction | |
7245 | 327 |