/[MITgcm]/MITgcm_contrib/enderton/Diagnostics/DiagPlot.m
ViewVC logotype

Contents of /MITgcm_contrib/enderton/Diagnostics/DiagPlot.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.6 - (show annotations) (download)
Wed Aug 10 19:58:03 2005 UTC (19 years, 11 months ago) by enderton
Branch: MAIN
Changes since 1.5: +13 -9 lines
Added functionality to specify colormap, overridding and/or centering caxis.

1 function ifig = DiagPlot(pagename,page,data,xax,yax,time,pltslc,...
2 outputdir,LoadGridData,SavePlots,DiagDebug);
3
4 % Function: DiagPlot
5 % Author: Daniel Enderton
6 %
7 % Input Fields:
8 %
9 % Field Type (Brief) Description
10 % -----------------------------------------------------------------------
11 % ifig integer Figure counter
12 % field cell array Experiment and plot configuration information
13 % data cell array Plotting data
14 % datatime array Iterations ('Int') or months ('Tav') of data
15 % outputdir string Output directory name
16 % LoadGridData 0/1 Optionally load grid data
17 % SavePlots 0/1 Optionally save plot to .eps file
18 %
19 % Descripton:
20 % This is the plotting function for the diagnostics package. This
21 % function should allow you to plot all sorts of things, and is
22 % reasonably versitile. Unfortunately, this also means that things get
23 % quite comlicated. The code is broken up into little scripts to make it
24 % more managable, though unfortunately this makes it rather difficult to
25 % track variables and make changes throughout the function.
26
27 % Load diagnostics parameters: Plot, general, and field information.
28 DiagGenParam;
29 DiagPlotDefaults;
30 DiagFieldParamA;
31 DiagFieldParamO;
32 DiagFieldParamC;
33 DiagFieldParamI;
34 diagrunparam = ReadVariables('DiagRunDefaults.m');
35 nrow = length(page);
36
37 % Initiate figure, with number 'ifig', set oreiention.
38 figure; clf; set(gca,'fontsize',fs_tick); eval(['orient ',Orientation,';']);
39
40 % Loop over subplots and make plots.
41 for inrow = 1:nrow
42
43 ntrl = length(page{inrow}); if ntrl ~= 1, ntrl = ntrl - 1; end
44 if ntrl == 1, cmp = 'Sep'; else, cmp = page{inrow}{end}; end
45 if ntrl == 1, ncol = 1; elseif isequal(cmp,'Sbs'), ncol = ntrl; else ncol = 1; end
46
47 dx = (1-dxl-dxr-(ncol-1)*dxm)/ncol;
48 dy = (1-dyb-dyt-(nrow-1)*dym)/nrow;
49
50 for incol = 1:ncol
51
52 % Very crude test to see if cube sphere, must be fixed!
53 test = size(data{inrow}{incol});
54 if test(1)./test(2) == 6, isCS = 1; else, isCS = 0; end
55 fln = page{inrow}{incol}{ifln};
56 pst = page{inrow}{incol}{ipst};
57 flu = page{inrow}{incol}{iflu};
58
59 % Set panel settings to default values, override with optional
60 % settings.
61 DiagPlotDefaults;
62 ExpInfo = page{inrow}{incol};
63 for iarg = 14:2:length(ExpInfo)
64 if ~ismember(ExpInfo{iarg},diagrunparam)
65 ivalue=ExpInfo{iarg+1};
66 if isstr(ivalue), fvalue=['''',ivalue,''''];
67 elseif prod(size(ivalue))>1, fvalue=mat2str(ivalue);
68 else fvalue=num2str(ivalue); end
69 evalexpr = [ExpInfo{iarg},'=',fvalue,';'];
70 if DiagDebug, disp([' Optional plot parameter evaluation: ',evalexpr]); end
71 eval(evalexpr);
72 end
73 end
74
75 disp([' Row: ',num2str(inrow),'/',num2str(nrow),...
76 '; Col: ',num2str(incol),'/',num2str(ncol),...
77 '; Cmp: ',cmp]);
78
79 % Load contour intervals, units (loaded in 'DiagFieldParam[A,O]').
80 if ~isequal(cmp,'Dif')
81 try, contint; catch
82 try, eval(['contint = ',fln,'contour',flu,';']);
83 catch, disp(['***Warning*** No contour information for ',fln]);
84 disp([' Using 10 generic contour levels.']);
85 contint = 10; end, end
86 end
87 try, units; catch
88 try, eval(['units = ',fln,'units',flu,';']);
89 catch, disp(['***Warning*** No unit information found for ',fln]);
90 disp([' Using question mark.']);
91 units = '?'; end, end
92
93 xi = dxl + (incol-1)*(dx+dxm);
94 yi = 1-dyt-inrow*dy-(inrow-1)*dym;
95
96 isp = (inrow-1)*ncol+incol;
97 if DiagDebug, disp([' DiagDebug: Subplot: ',mat2str([nrow,ncol,isp])]); end
98 if DiagDebug, disp([' DiagDebug: SP Range: ',mat2str([xi,yi,dx,dy])]); end
99 subplot(nrow,ncol,isp); hold on;
100 set(gca,'position',[xi,yi,dx,dy],'fontsize',fs_axis);
101
102 if Coast
103 fac = pi./180;
104 xax{inrow}{incol} = xax{inrow}{incol}.*fac;
105 yax{inrow}{incol} = yax{inrow}{incol}.*fac;
106 else, fac = 1; end
107
108 % (Re)set axes and color axis -- Accounts for things like a possible
109 % colorbar, or trimming the axis in certain ways.
110 % Apply desired colorbar, contour label, tick labels, box, grid, and
111 % other such odds and ends.
112 DiagPlotMakePlot;
113 DiagPlotResetAxes;
114 DiagPlotMisc;
115 DiagPlotTitles;
116 clear contint units crange
117 end
118 end
119
120
121 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
122 % Save plot, update figure counter %
123 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
124
125 % Save plot as desired.
126 if SavePlots
127 if isequal(outputdir,'')
128 outputfile = [pagename,'.eps'];
129 else
130 outputfile = [outputdir,'/',pagename,'.eps'];
131 end
132 print('-depsc2',outputfile);
133 end

  ViewVC Help
Powered by ViewVC 1.1.22