-
Notifications
You must be signed in to change notification settings - Fork 0
/
MakeFigureAndAxesSuperCustom3D.m
80 lines (73 loc) · 3.68 KB
/
MakeFigureAndAxesSuperCustom3D.m
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Core Model, 2022
% Written by Maya Davis
% Concept by Maya Davis and Melissa A. Redford
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [Figure, AxesList] = MakeFigureAndAxesSuperCustom3D(...
FigureBackgroundColor, NumVerticalTiles, NumHorizontalTiles, ...
OverallTopBorder, OverallBottomBorder, ...
OverallHorizontalBetweenBorder, OverallLeftBorder, ...
OverallRightBorder, OverallVerticalBetweenBorder, ...
IndividualTopBorder, IndividualBottomBorder, IndividualLeftBorder, ...
IndividualRightBorder, AxesBackgroundColors, xBoundsList, yBoundsList, ...
zBoundsList, GridOnOff, Projection, CameraPosition, CameraFocalPoint)
% The lists that are in a vector-type order will be matched to axes by
% going left to right, top to bottom.
Figure = figure("Color", FigureBackgroundColor);
% Altgorithmically creating the tile axis coordinates
OuterPositions = cell(NumVerticalTiles, NumHorizontalTiles);
InnerPositions = cell(NumVerticalTiles, NumHorizontalTiles);
xDistOuter = (1 - OverallLeftBorder - OverallRightBorder - ...
(OverallVerticalBetweenBorder * (NumHorizontalTiles - 1)))...
/NumHorizontalTiles;
yDistOuter = (1 - OverallTopBorder - OverallBottomBorder - ...
(OverallHorizontalBetweenBorder * (NumVerticalTiles - 1)))...
/NumVerticalTiles;
xDistInner = xDistOuter - IndividualLeftBorder - IndividualRightBorder;
yDistInner = yDistOuter - IndividualTopBorder - IndividualBottomBorder;
% Initial values for lower tiles
yMinOuter = OverallBottomBorder;
yMinInner = yMinOuter + IndividualBottomBorder;
for VIndex = 1:NumVerticalTiles
% Initial values for left tiles
xMinOuter = OverallLeftBorder;
xMinInner = xMinOuter + IndividualLeftBorder;
for HIndex = 1:NumHorizontalTiles
OuterPositions{VIndex, HIndex} = [xMinOuter yMinOuter xDistOuter yDistOuter];
InnerPositions{VIndex, HIndex} = [xMinInner yMinInner xDistInner yDistInner];
% Updating values for next loop
xMinOuter = xMinOuter + xDistOuter + OverallVerticalBetweenBorder;
xMinInner = xMinOuter + IndividualLeftBorder;
end
% Updating values for next loop
yMinOuter = yMinOuter + yDistOuter + OverallHorizontalBetweenBorder;
yMinInner = yMinOuter + IndividualBottomBorder;
end
AxesList = cell(NumVerticalTiles * NumHorizontalTiles, 1);
ListIndex = 1;
for VIndex = 1:NumVerticalTiles
for HIndex = 1:NumHorizontalTiles
CurrentAxes = axes(Figure, "OuterPosition", ...
OuterPositions{NumVerticalTiles - VIndex + 1, HIndex}, ...
"Position", ...
InnerPositions{NumVerticalTiles - VIndex + 1, HIndex}, ...
"Color", AxesBackgroundColors(ListIndex, :), ...
"XTickMode", "manual", "YTickMode", "manual", ...
"ZTickMode", "manual", ...
"XTickLabel", {}, "YTickLabel", {}, ...
"ZTickLabel", {}, ...
"XLimMode", "manual", "YLimMode", "manual", ...
"ZLimMode", "manual", ...
"XLim", xBoundsList(ListIndex, :), ...
"YLim", yBoundsList(ListIndex, :), ...
"ZLim", zBoundsList(ListIndex, :), ...
"XGrid", GridOnOff, "YGrid", GridOnOff, ...
"ZGrid", GridOnOff, ...
"Projection", Projection, ...
"CameraPosition", CameraPosition, ...
"CameraTarget", CameraFocalPoint);
AxesList{ListIndex, 1} = CurrentAxes;
ListIndex = ListIndex + 1;
end
end
end