-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsubplots.m
More file actions
54 lines (52 loc) · 1.51 KB
/
subplots.m
File metadata and controls
54 lines (52 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
%SUBPLOTS - Creates matrix of subplots
%
%sp = subplots(M,N,innerMargin,outerMargin)
%Inputs:
% M - Number of rows or vector of relative sizes
% N - Number of columns or vector of relative sizes
% innerMargin - [1x2] row, column inner spacing
% [1x1] row and column, inner spacing
% outerMargin - defaults to innerMargin
% [1x4] top,bottom,left,right margin
% [1x2] top and bottom, left and right spacing
% [1x1] top and bottom and left and right spacing
%
% see also: subplot, mergeAxes
%
% pjh7 2013.04.09
function sp = subplots(M,N,innerMargin,outerMargin)
if length(M)==1
Mfrac = ones(M,1);
else
Mfrac = M/sum(M)*length(M);
M = length(M);
end
if length(N)==1
Nfrac = ones(N,1);
else
Nfrac = N/sum(N)*length(N);
N = length(N);
end
if ~exist('innerMargin','var')
innerMargin = [0.1 0.1];
end
if length(innerMargin) == 1
innerMargin = innerMargin([1 1]);
end
if ~exist('outerMargin','var')
outerMargin = innerMargin([1 1 2 2]);
end
if length(outerMargin) == 1
outerMargin = outerMargin([1 1 1 1]);
elseif length(outerMargin) == 2
outerMargin = outerMargin([1 1 2 2]);
end
clf;
H = (1-(outerMargin(1)+outerMargin(2))-(innerMargin(1)*(M-1)))/M;
W = (1-(outerMargin(3)+outerMargin(4))-(innerMargin(2)*(N-1)))/N;
%sp = zeros(M,N);
for m = 1:M
for n = 1:N
sp(m,n) = subplot('position',[outerMargin(3)+sum(W*Nfrac(1:n-1))+(n-1)*innerMargin(2) 1-outerMargin(1)-sum(H*Mfrac(1:m))-((m-1)*innerMargin(1)) W*Nfrac(n) H*Mfrac(m)]);
end
end