/[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.7 - (show annotations) (download)
Tue Sep 13 19:32:03 2005 UTC (19 years, 10 months ago) by enderton
Branch: MAIN
CVS Tags: HEAD
Changes since 1.6: +67 -63 lines
Added functionality to allow difference plots to have unspecified contour intervals.

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 if ~isequal(data{inrow}{incol},'Empty')
53
54 % Very crude test to see if cube sphere, must be fixed!
55 test = size(data{inrow}{incol});
56 if test(1)./test(2) == 6, isCS = 1; else, isCS = 0; end
57 fln = page{inrow}{incol}{ifln};
58 pst = page{inrow}{incol}{ipst};
59 flu = page{inrow}{incol}{iflu};
60
61 % Set panel settings to default values, override with optional
62 % settings.
63 DiagPlotDefaults;
64 ExpInfo = page{inrow}{incol};
65 for iarg = 14:2:length(ExpInfo)
66 if ~ismember(ExpInfo{iarg},diagrunparam)
67 ivalue=ExpInfo{iarg+1};
68 if isstr(ivalue), fvalue=['''',ivalue,''''];
69 elseif prod(size(ivalue))>1, fvalue=mat2str(ivalue);
70 else fvalue=num2str(ivalue); end
71 evalexpr = [ExpInfo{iarg},'=',fvalue,';'];
72 if DiagDebug, disp([' Optional plot parameter evaluation: ',evalexpr]); end
73 eval(evalexpr);
74 end
75 end
76
77 disp([' Row: ',num2str(inrow),'/',num2str(nrow),...
78 '; Col: ',num2str(incol),'/',num2str(ncol),...
79 '; Cmp: ',cmp]);
80
81 % Load contour intervals, units (loaded in
82 % 'DiagFieldParam[A,O]').
83 if ~isequal(cmp,'Dif')
84 try, contint; catch
85 try, eval(['contint = ',fln,'contour',flu,';']);
86 catch, disp(['***Warning*** No contour information for ',fln]);
87 disp([' Using 10 generic contour levels.']);
88 contint = 10; end, end
89 else, try, contint; catch, contint = 10; end, end
90 try, units; catch
91 try, eval(['units = ',fln,'units',flu,';']);
92 catch, disp(['***Warning*** No unit information found for ',fln]);
93 disp([' Using question mark.']);
94 units = '?'; end, end
95
96 xi = dxl + (incol-1)*(dx+dxm);
97 yi = 1-dyt-inrow*dy-(inrow-1)*dym;
98
99 isp = (inrow-1)*ncol+incol;
100 if DiagDebug, disp([' DiagDebug: Subplot: ',mat2str([nrow,ncol,isp])]); end
101 if DiagDebug, disp([' DiagDebug: SP Range: ',mat2str([xi,yi,dx,dy])]); end
102 subplot(nrow,ncol,isp); hold on;
103 set(gca,'position',[xi,yi,dx,dy],'fontsize',fs_axis);
104
105 if Coast
106 fac = pi./180;
107 xax{inrow}{incol} = xax{inrow}{incol}.*fac;
108 yax{inrow}{incol} = yax{inrow}{incol}.*fac;
109 else, fac = 1; end
110
111 % (Re)set axes and color axis -- Accounts for things like a possible
112 % colorbar, or trimming the axis in certain ways.
113 % Apply desired colorbar, contour label, tick labels, box, grid, and
114 % other such odds and ends.
115 DiagPlotMakePlot;
116 DiagPlotResetAxes;
117 DiagPlotMisc;
118 DiagPlotTitles;
119 clear contint units crange
120 end
121 end
122 end
123
124
125 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
126 % Save plot, update figure counter %
127 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
128
129 % Save plot as desired.
130 if SavePlots
131 if isequal(outputdir,'')
132 outputfile = [pagename,'.eps'];
133 else
134 outputfile = [outputdir,'/',pagename,'.eps'];
135 end
136 print('-depsc2',outputfile);
137 end

  ViewVC Help
Powered by ViewVC 1.1.22