Switch to side-by-side view

--- a
+++ b/combinedDeepLearningActiveContour/functions/subplot1.m
@@ -0,0 +1,228 @@
+function h1=subplot1(M,N,varargin)
+%-------------------------------------------------------------------------
+% subplot1 function         An mproved subplot function
+% Input  : - If more than one input argumenst are given,
+%            then the first parameter is the number of rows.
+%            If single input argument is given, then this is the
+%            subplot-number for which to set focus.
+%            This could a scalar or two element vector (I,J).
+%          - Number of columns.
+%          * variable number of parameters
+%            (in pairs: ...,Keywoard, Value,...)
+%           - 'Min'    : X, Y lower position of lowest subplot,
+%                        default is [0.10 0.10].
+%           - 'Max'    : X, Y largest position of highest subplot,
+%                        default is [0.95 0.95].
+%           - 'Gap'    : X,Y gaps between subplots,
+%                        default is [0.01 0.01].
+%           - 'XTickL' : x ticks labels option,
+%                        'Margin' : plot only XTickLabels in the
+%                                   subplot of the lowest  row (default).
+%                        'All'    : plot XTickLabels in all subplots.
+%                        'None'   : don't plot XTickLabels in subplots.
+%           - 'YTickL' : y ticks labels option,
+%                        'Margin' : plot only YTickLabels in the
+%                                   subplot of the lowest  row (defailt).
+%                        'All'    : plot YTickLabels in all subplots.
+%                        'None'   : don't plot YTickLabels in subplots.
+%           -  'FontS'  : axis font size, default is 10.
+%             'XScale' : scale of x axis:
+%                        'linear', default.
+%                        'log'
+%           -  'YScale' : scale of y axis:
+%                        'linear', default.
+%                        'log'
+% Example: subplot1(2,2,'Gap',[0.02 0.02]);
+%          subplot1(2,3,'Gap',[0.02 0.02],'XTickL','None','YTickL','All','FontS',16);
+% See also : subplot1c.m
+% Tested : Matlab 5.3
+%     By : Eran O. Ofek           June 2002
+%    URL : http://wise-obs.tau.ac.il/~eran/matlab.html
+%-------------------------------------------------------------------------
+MinDef      = [0.10 0.10];
+MaxDef      = [0.95 0.95];
+GapDef      = [0.01 0.01];
+XTickLDef   = 'Margin';  
+YTickLDef   = 'Margin';  
+FontSDef    = 10;
+XScaleDef   = 'linear';
+YScaleDef   = 'linear';
+
+% set default parameters
+Min    = MinDef;
+Max    = MaxDef;
+Gap    = GapDef;
+XTickL = XTickLDef;
+YTickL = YTickLDef;
+FontS  = FontSDef;
+XScale = XScaleDef;
+YScale = YScaleDef;
+
+
+MoveFoc = 0;
+if (nargin==1),
+   %--- move focus to subplot # ---
+   MoveFoc = 1;
+elseif (nargin==2),
+   % do nothing
+elseif (nargin>2),
+   Narg = length(varargin);
+   if (0.5.*Narg==floor(0.5.*Narg)),
+
+      for I=1:2:Narg-1,
+         switch varargin{I},
+          case 'Min'
+ 	     Min = varargin{I+1};
+          case 'Max'
+ 	     Max = varargin{I+1};
+          case 'Gap'
+ 	     Gap = varargin{I+1};
+          case 'XTickL'
+ 	     XTickL = varargin{I+1};
+          case 'YTickL'
+ 	     YTickL = varargin{I+1};
+          case 'FontS'
+ 	     FontS = varargin{I+1};
+          case 'XScale'
+ 	     XScale = varargin{I+1};
+          case 'YScale'
+ 	     YScale = varargin{I+1};
+          otherwise
+	     error('Unknown keyword');
+         end
+      end
+   else
+      error('Optional arguments should given as keyword, value');
+   end
+else
+   error('Illegal number of input arguments');
+end
+
+
+
+
+
+
+
+
+switch MoveFoc
+ case 1
+    %--- move focus to subplot # ---
+    H    = get(gcf,'Children');
+    Ptot = length(H);
+    if (length(M)==1),
+       M    = Ptot - M + 1; 
+    elseif (length(M)==2),
+       %--- check for subplot size ---
+       Pos1  = get(H(1),'Position');
+       Pos1x = Pos1(1);
+       for Icheck=2:1:Ptot,
+          PosN  = get(H(Icheck),'Position');
+          PosNx = PosN(1);
+          if (PosNx==Pos1x),
+             NumberOfCol = Icheck - 1;
+             break;
+          end
+       end
+       NumberOfRow = Ptot./NumberOfCol;
+
+       Row = M(1);
+       Col = M(2);
+
+       M   = (Row-1).*NumberOfCol + Col;
+       M    = Ptot - M + 1; 
+    else
+       error('Unknown option, undefined subplot index');
+    end
+
+    set(gcf,'CurrentAxes',H(M));
+    h1=H(M);
+ case 0
+    %--- open subplots ---
+
+    Xmin   = Min(1);
+    Ymin   = Min(2);
+    Xmax   = Max(1);
+    Ymax   = Max(2);
+    Xgap   = Gap(1);
+    Ygap   = Gap(2);
+    
+    
+    Xsize  = (Xmax - Xmin)./N;
+    Ysize  = (Ymax - Ymin)./M;
+    
+    Xbox   = Xsize - Xgap;
+    Ybox   = Ysize - Ygap;
+    
+    
+    Ptot = M.*N;
+    
+    Hgcf = gcf;
+    clf;
+    figure(Hgcf);
+    for Pi=1:1:Ptot,
+       Row = ceil(Pi./N);
+       Col = Pi - (Row - 1)*N;
+
+       Xstart = Xmin + Xsize.*(Col - 1);
+       Ystart = Ymax - Ysize.*Row;
+
+%       subplot(M,N,Pi);
+%       hold on;
+       axes('position',[Xstart,Ystart,Xbox,Ybox]);
+       %set(gca,'position',[Xstart,Ystart,Xbox,Ybox]);
+       set(gca,'FontSize',FontS); 
+       box on;
+       hold on;
+
+       switch XTickL
+        case 'Margin'
+           if (Row~=M),
+              %--- erase XTickLabel ---
+              set(gca,'XTickLabel',[]);
+           end
+        case 'All'
+           % do nothing
+        case 'None'
+           set(gca,'XTickLabel',[]);
+        otherwise
+           error('Unknown XTickL option');
+       end
+
+       switch YTickL
+        case 'Margin'
+           if (Col~=1),
+              %--- erase YTickLabel ---
+              set(gca,'YTickLabel',[]);
+           end    
+        case 'All'
+           % do nothing
+        case 'None'
+           set(gca,'YTickLabel',[]);
+        otherwise
+           error('Unknown XTickL option');
+       end
+
+       switch XScale
+        case 'linear'
+           set(gca,'XScale','linear');
+        case 'log'
+           set(gca,'XScale','log');
+        otherwise
+  	   error('Unknown XScale option');
+       end
+
+       switch YScale
+        case 'linear'
+           set(gca,'YScale','linear');
+        case 'log'
+           set(gca,'YScale','log');
+        otherwise
+  	   error('Unknown YScale option');
+       end
+
+    end
+
+ otherwise
+    error('Unknown MoveFoc option');
+end