Mercurial > hg > octave-lyh
annotate scripts/plot/subplot.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:
13794
diff
changeset
|
1 ## Copyright (C) 1995-2012 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/>. | |
1540 | 18 |
3368 | 19 ## -*- texinfo -*- |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
20 ## @deftypefn {Function File} {} subplot (@var{rows}, @var{cols}, @var{index}) |
3368 | 21 ## @deftypefnx {Function File} {} subplot (@var{rcn}) |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
11305
diff
changeset
|
22 ## Set up a plot grid with @var{rows} by @var{cols} subwindows and plot |
6448 | 23 ## in location given by @var{index}. |
3426 | 24 ## |
3368 | 25 ## If only one argument is supplied, then it must be a three digit value |
26 ## specifying the location in digits 1 (rows) and 2 (columns) and the plot | |
27 ## index in digit 3. | |
3426 | 28 ## |
3368 | 29 ## The plot index runs row-wise. First all the columns in a row are filled |
30 ## and then the next row is filled. | |
3426 | 31 ## |
5798 | 32 ## For example, a plot with 2 by 3 grid will have plot indices running as |
2311 | 33 ## follows: |
3368 | 34 ## @tex |
35 ## \vskip 10pt | |
36 ## \hfil\vbox{\offinterlineskip\hrule | |
37 ## \halign{\vrule#&&\qquad\hfil#\hfil\qquad\vrule\cr | |
7107 | 38 ## height13pt&1&2&3\cr height12pt&&&\cr\noalign{\hrule} |
39 ## height13pt&4&5&6\cr height12pt&&&\cr\noalign{\hrule}}} | |
3368 | 40 ## \hfil |
41 ## \vskip 10pt | |
42 ## @end tex | |
8517
81d6ab3ac93c
Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents:
8350
diff
changeset
|
43 ## @ifnottex |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10793
diff
changeset
|
44 ## |
8350
0e3a92a8683c
fix texi bug in subplot.m
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
8232
diff
changeset
|
45 ## @example |
3368 | 46 ## @group |
7040 | 47 ## +-----+-----+-----+ |
48 ## | 1 | 2 | 3 | | |
49 ## +-----+-----+-----+ | |
50 ## | 4 | 5 | 6 | | |
51 ## +-----+-----+-----+ | |
8350
0e3a92a8683c
fix texi bug in subplot.m
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
8232
diff
changeset
|
52 ## @end group |
6257 | 53 ## @end example |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10793
diff
changeset
|
54 ## |
12575
d0b799dafede
Grammarcheck files for 3.4.1 release.
Rik <octave@nomad.inbox5.com>
parents:
12494
diff
changeset
|
55 ## @var{index} may be a vector. In which case, the new axis will enclose |
d0b799dafede
Grammarcheck files for 3.4.1 release.
Rik <octave@nomad.inbox5.com>
parents:
12494
diff
changeset
|
56 ## the grid locations specified. The first demo illustrates an example: |
12476
070214996fba
subplot.m: Document using INDEX as a vector.
Ben Abbott <bpabbott@mac.com>
parents:
12470
diff
changeset
|
57 ## |
070214996fba
subplot.m: Document using INDEX as a vector.
Ben Abbott <bpabbott@mac.com>
parents:
12470
diff
changeset
|
58 ## @example |
070214996fba
subplot.m: Document using INDEX as a vector.
Ben Abbott <bpabbott@mac.com>
parents:
12470
diff
changeset
|
59 ## @code{demo ("subplot", 1)} |
070214996fba
subplot.m: Document using INDEX as a vector.
Ben Abbott <bpabbott@mac.com>
parents:
12470
diff
changeset
|
60 ## @end example |
070214996fba
subplot.m: Document using INDEX as a vector.
Ben Abbott <bpabbott@mac.com>
parents:
12470
diff
changeset
|
61 ## |
8517
81d6ab3ac93c
Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents:
8350
diff
changeset
|
62 ## @end ifnottex |
12476
070214996fba
subplot.m: Document using INDEX as a vector.
Ben Abbott <bpabbott@mac.com>
parents:
12470
diff
changeset
|
63 ## @seealso{axes, plot} |
3368 | 64 ## @end deftypefn |
1540 | 65 |
2312 | 66 ## Author: Vinayak Dutt <Dutt.Vinayak@mayo.EDU> |
67 ## Adapted-By: jwe | |
1540 | 68 |
13794
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
69 function h = subplot (varargin) |
11305
c9df571efe95
subplot.m: Add suppport for "align" and "replace" options.
Ben Abbott <bpabbott@mac.com>
parents:
11149
diff
changeset
|
70 |
c9df571efe95
subplot.m: Add suppport for "align" and "replace" options.
Ben Abbott <bpabbott@mac.com>
parents:
11149
diff
changeset
|
71 align_axes = false; |
c9df571efe95
subplot.m: Add suppport for "align" and "replace" options.
Ben Abbott <bpabbott@mac.com>
parents:
11149
diff
changeset
|
72 replace_axes = false; |
13794
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
73 have_position = false; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
74 initial_args_decoded = false; |
6163 | 75 |
13794
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
76 if (nargin > 2) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
77 ## R, C, N? |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
78 arg1 = varargin{1}; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
79 arg2 = varargin{2}; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
80 arg3 = varargin{3}; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
81 if (isnumeric (arg1) && isscalar (arg1) && isnumeric (arg2) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
82 && isscalar (arg2) && isnumeric (arg3)) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
83 rows = arg1; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
84 cols = arg2; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
85 index = arg3; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
86 varargin(1:3)= []; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
87 initial_args_decoded = true; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
88 endif |
1540 | 89 endif |
90 | |
13794
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
91 if (! initial_args_decoded && nargin > 1) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
92 ## check for 'position', pos, ... |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
93 if (strcmpi (varargin{1}, "position")) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
94 arg = varargin{2}; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
95 if (isnumeric (arg) && numel (arg) == 4) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
96 pos = arg; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
97 varargin(1:2) = []; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
98 have_position = true; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
99 initial_args_decoded = true; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
100 else |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
101 error ("expecting position to be a 4-element numeric array"); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
102 endif |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
103 endif |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
104 endif |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
105 |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
106 if (! initial_args_decoded && nargin > 0) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
107 arg = varargin{1}; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
108 if (nargin == 1 && ishandle (arg)) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
109 ## Axes handle? |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
110 axes (arg); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
111 cf = get (0, "currentfigure"); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
112 set (cf, "nextplot", "add"); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
113 return; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
114 elseif (isscalar (arg) && arg >= 0) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
115 ## RCN? |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
116 index = rem (arg, 10); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
117 arg = (arg - index) / 10; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
118 cols = rem (arg, 10); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
119 arg = (arg - cols) / 10; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
120 rows = rem (arg, 10); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
121 varargin(1) = []; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
122 initial_args_decoded = true; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
123 else |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
124 error ("subplot: expecting axes handle or RCN argument"); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
125 endif |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
126 endif |
1540 | 127 |
13794
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
128 if (! initial_args_decoded) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
129 print_usage (); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
130 endif |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
131 |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
132 if (! have_position) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
133 cols = round (cols); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
134 rows = round (rows); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
135 index = round (index); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
136 |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
137 if (any (index < 1) || any (index > rows*cols)) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
138 error ("subplot: INDEX value must be greater than 1 and less than ROWS*COLS"); |
1540 | 139 endif |
140 | |
13794
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
141 if (cols < 1 || rows < 1 || index < 1) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
142 error ("subplot: COLS, ROWS, and INDEX must be be positive"); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
143 endif |
1540 | 144 endif |
145 | |
13794
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
146 nargs = numel (varargin); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
147 while (nargs > 0) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
148 arg = varargin{1}; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
149 if (strcmpi (arg, "align")) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
150 align_axes = true; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
151 elseif (strcmpi (arg, "replace")) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
152 replace_axes = true; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
153 else |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
154 break; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
155 endif |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
156 varargin(1) = []; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
157 nargs--; |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
158 endwhile |
1540 | 159 |
12470
64ae43e0e1c0
subplot.m: Use new looseinset property introduced by changeset 12467.
Ben Abbott <bpabbott@mac.com>
parents:
12455
diff
changeset
|
160 axesunits = get (0, "defaultaxesunits"); |
12455
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
161 cf = gcf (); |
12470
64ae43e0e1c0
subplot.m: Use new looseinset property introduced by changeset 12467.
Ben Abbott <bpabbott@mac.com>
parents:
12455
diff
changeset
|
162 figureunits = get (cf, "units"); |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
163 unwind_protect |
12470
64ae43e0e1c0
subplot.m: Use new looseinset property introduced by changeset 12467.
Ben Abbott <bpabbott@mac.com>
parents:
12455
diff
changeset
|
164 units = "normalized"; |
64ae43e0e1c0
subplot.m: Use new looseinset property introduced by changeset 12467.
Ben Abbott <bpabbott@mac.com>
parents:
12455
diff
changeset
|
165 set (0, "defaultaxesunits", units); |
12455
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
166 set (cf, "units", "pixels"); |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
167 |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
168 ## FIXME: At the moment we force gnuplot to use the aligned mode |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
169 ## which will set "activepositionproperty" to "position". |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
170 ## Τhis can yield to text overlap between labels and titles |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
171 ## see bug #31610 |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
172 if (strcmp (get (cf, "__graphics_toolkit__"), "gnuplot")) |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
173 align_axes = true; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
174 endif |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
175 |
13794
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
176 if (! have_position) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
177 if (align_axes) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
178 pos = subplot_position (rows, cols, index, "position"); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
179 elseif (strcmp (get (cf, "__graphics_toolkit__"), "gnuplot")) |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
180 pos = subplot_position (rows, cols, index, "outerpositiontight"); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
181 else |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
182 pos = subplot_position (rows, cols, index, "outerposition"); |
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
183 endif |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
184 endif |
1540 | 185 |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
186 set (cf, "nextplot", "add"); |
1540 | 187 |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
188 found = false; |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
189 kids = get (cf, "children"); |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
190 for child = reshape (kids, 1, numel (kids)) |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
191 ## Check whether this child is still valid; this might not be the |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
192 ## case anymore due to the deletion of previous children (due to |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
193 ## "deletefcn" callback or for legends/colorbars that are deleted |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
194 ## with their corresponding axes). |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
195 if (! ishandle (child)) |
7086 | 196 continue; |
197 endif | |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
198 if (strcmp (get (child, "type"), "axes")) |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
199 ## Skip legend and colorbar objects. |
11149
fe3c3dfc07eb
style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents:
10931
diff
changeset
|
200 if (strcmp (get (child, "tag"), "legend") |
fe3c3dfc07eb
style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents:
10931
diff
changeset
|
201 || strcmp (get (child, "tag"), "colorbar")) |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
202 continue; |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
203 endif |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
204 if (align_axes) |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
205 objpos = get (child, "position"); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
206 else |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
207 objpos = get (child, "outerposition"); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
208 endif |
11305
c9df571efe95
subplot.m: Add suppport for "align" and "replace" options.
Ben Abbott <bpabbott@mac.com>
parents:
11149
diff
changeset
|
209 if (all (objpos == pos) && ! replace_axes) |
10549 | 210 ## If the new axes are in exactly the same position as an |
211 ## existing axes object, use the existing axes. | |
212 found = true; | |
213 tmp = child; | |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
214 else |
10549 | 215 ## If the new axes overlap an old axes object, delete the old |
216 ## axes. | |
217 x0 = pos(1); | |
218 x1 = x0 + pos(3); | |
219 y0 = pos(2); | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11576
diff
changeset
|
220 y1 = y0 + pos(4); |
10549 | 221 objx0 = objpos(1); |
222 objx1 = objx0 + objpos(3); | |
223 objy0 = objpos(2); | |
224 objy1 = objy0 + objpos(4); | |
225 if (! (x0 >= objx1 || x1 <= objx0 || y0 >= objy1 || y1 <= objy0)) | |
226 delete (child); | |
227 endif | |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
228 endif |
6178 | 229 endif |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
230 endfor |
1540 | 231 |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
232 if (found) |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
233 set (cf, "currentaxes", tmp); |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
234 elseif (align_axes) |
13794
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
235 tmp = axes ("box", "off", "position", pos, varargin{:}); |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
236 elseif (strcmp (get (cf, "__graphics_toolkit__"), "gnuplot")) |
13794
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
237 tmp = axes ("box", "off", "outerposition", pos, varargin{:}); |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
238 else |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
239 tmp = axes ("looseinset", [0 0 0 0], "box", "off", "outerposition", pos, |
13794
5b395217ccb9
improve argument parsing for subplot, handle 'position' argument
John W. Eaton <jwe@octave.org>
parents:
12685
diff
changeset
|
240 "autopos_tag", "subplot", varargin{:}); |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
241 endif |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
242 |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
243 unwind_protect_cleanup |
12470
64ae43e0e1c0
subplot.m: Use new looseinset property introduced by changeset 12467.
Ben Abbott <bpabbott@mac.com>
parents:
12455
diff
changeset
|
244 set (0, "defaultaxesunits", axesunits); |
64ae43e0e1c0
subplot.m: Use new looseinset property introduced by changeset 12467.
Ben Abbott <bpabbott@mac.com>
parents:
12455
diff
changeset
|
245 set (cf, "units", figureunits); |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
246 end_unwind_protect |
1540 | 247 |
6257 | 248 if (nargout > 0) |
249 h = tmp; | |
1540 | 250 endif |
251 | |
252 endfunction | |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
253 |
12470
64ae43e0e1c0
subplot.m: Use new looseinset property introduced by changeset 12467.
Ben Abbott <bpabbott@mac.com>
parents:
12455
diff
changeset
|
254 function pos = subplot_position (rows, cols, index, position_property) |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
255 |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
11305
diff
changeset
|
256 if (rows == 1 && cols == 1) |
12455
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
257 ## Trivial result for subplot (1,1,1) |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
258 if (strcmpi (position_property, "position")) |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
259 pos = get (0, "defaultaxesposition"); |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
260 else |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
261 pos = get (0, "defaultaxesouterposition"); |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
262 endif |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
263 return |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
264 endif |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
265 |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
266 if (strcmp (position_property, "outerposition") |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
267 || strcmp (position_property, "outerpositiontight")) |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
268 margins.left = 0.05; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
269 margins.bottom = 0.05; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
270 margins.right = 0.05; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
271 margins.top = 0.05; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
272 if (strcmp (position_property, "outerpositiontight")) |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
273 margins.column = 0.; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
274 margins.row = 0.; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
275 else |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
276 margins.column = 0.04 / cols; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
277 margins.row = 0.04 / rows; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
278 endif |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
279 width = 1 - margins.left - margins.right - (cols-1)*margins.column; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
280 width = width / cols; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
281 height = 1 - margins.top - margins.bottom - (rows-1)*margins.row; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
282 height = height / rows; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
283 else |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
284 defaultaxesposition = get (0, "defaultaxesposition"); |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
285 |
12685
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
286 ## The outer margins surrounding all subplot "positions" are independent |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
287 ## of the number of rows and/or columns |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
288 margins.left = defaultaxesposition(1); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
289 margins.bottom = defaultaxesposition(2); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
290 margins.right = 1.0 - margins.left - defaultaxesposition(3); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
291 margins.top = 1.0 - margins.bottom - defaultaxesposition(4); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
292 |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
293 ## Fit from Matlab experiments |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
294 pc = 1 ./ [0.1860, (margins.left + margins.right - 1)]; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
295 margins.column = 1 ./ polyval (pc , cols); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
296 pr = 1 ./ [0.2282, (margins.top + margins.bottom - 1)]; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
297 margins.row = 1 ./ polyval (pr , rows); |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
298 |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
299 ## Calculate the width/height of the subplot axes "position". |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
300 ## This is also consistent with Matlab |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
301 width = 1 - margins.left - margins.right - (cols-1)*margins.column; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
302 width = width / cols; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
303 height = 1 - margins.top - margins.bottom - (rows-1)*margins.row; |
5cbf660e649d
Restructure subplot positioning and avoid labels overlap (bug #31610)
Konstantinos Poulios <logari81@googlemail.com>
parents:
12575
diff
changeset
|
304 height = height / rows; |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
305 endif |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
306 |
12455
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
307 ## Index offsets from the lower left subplot |
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
308 yi = fix ((index(:)-1)/cols); |
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
309 xi = index(:) - yi*cols - 1; |
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
310 yi = (rows - 1) - yi; |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
311 |
12455
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
312 ## Lower left corner of the subplot, i.e. position(1:2) |
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
313 x0 = xi .* (width + margins.column) + margins.left; |
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
314 y0 = yi .* (height + margins.row) + margins.bottom; |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
315 |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
316 if (numel(x0) > 1) |
12455
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
317 ## subplot (row, col, m:n) |
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
318 x1 = max (x0(:)) + width; |
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
319 y1 = max (y0(:)) + height; |
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
320 x0 = min (x0(:)); |
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
321 y0 = min (y0(:)); |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
322 pos = [x0, y0, x1-x0, y1-y0]; |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
323 else |
12455
7b67bbf9dbbb
subplot.m: Decrease spacing between subplots rows / columns.
Ben Abbott <bpabbott@mac.com>
parents:
12132
diff
changeset
|
324 ## subplot (row, col, num) |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
325 pos = [x0, y0, width, height]; |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
326 endif |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
327 |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
328 endfunction |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
329 |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
330 %!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
|
331 %! clf; |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
332 %! r = 3; |
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
333 %! c = 3; |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
334 %! fmt = {"horizontalalignment", "center", "verticalalignment", "middle"}; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
335 %! for n = 1 : r*c |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
336 %! subplot (r, c, n); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
337 %! xlabel (sprintf ("xlabel #%d", n)); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
338 %! ylabel (sprintf ("ylabel #%d", n)); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
339 %! title (sprintf ("title #%d", n)); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
340 %! text (0.5, 0.5, sprintf("subplot(%d,%d,%d)", r, c, n), fmt{:}); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
341 %! axis ([0 1 0 1]); |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
342 %! endfor |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
343 %! subplot (r, c, 1:3); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
344 %! xlabel (sprintf ("xlabel #%d:%d", 1, 3)); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
345 %! ylabel (sprintf ("ylabel #%d:%d", 1, 3)); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
346 %! title (sprintf ("title #%d:%d", 1, 3)); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
347 %! text (0.5, 0.5, sprintf("subplot(%d,%d,%d:%d)", r, c, 1, 3), fmt{:}); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
348 %! axis ([0 1 0 1]); |
8744
4142982c66c6
subplot.m: Compatible placement of subplots.
Ben Abbott <bpabbott@mac.com>
parents:
8517
diff
changeset
|
349 |
11305
c9df571efe95
subplot.m: Add suppport for "align" and "replace" options.
Ben Abbott <bpabbott@mac.com>
parents:
11149
diff
changeset
|
350 %!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
|
351 %! clf; |
11305
c9df571efe95
subplot.m: Add suppport for "align" and "replace" options.
Ben Abbott <bpabbott@mac.com>
parents:
11149
diff
changeset
|
352 %! x = 0:1; |
c9df571efe95
subplot.m: Add suppport for "align" and "replace" options.
Ben Abbott <bpabbott@mac.com>
parents:
11149
diff
changeset
|
353 %! for n = 1:4 |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
354 %! subplot (2, 2, n, "align"); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
355 %! plot (x, x); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
356 %! xlabel (sprintf ("xlabel (2,2,%d)", n)); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
357 %! ylabel (sprintf ("ylabel (2,2,%d)", n)); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
358 %! title (sprintf ("title (2,2,%d)", n)); |
11305
c9df571efe95
subplot.m: Add suppport for "align" and "replace" options.
Ben Abbott <bpabbott@mac.com>
parents:
11149
diff
changeset
|
359 %! endfor |
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 %! subplot (1, 2, 1, "align"); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
361 %! plot (x, x); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
362 %! xlabel ("xlabel (1,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
|
363 %! ylabel ("ylabel (1,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
|
364 %! title ("title (1,2,1)"); |
11305
c9df571efe95
subplot.m: Add suppport for "align" and "replace" options.
Ben Abbott <bpabbott@mac.com>
parents:
11149
diff
changeset
|
365 |