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

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

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


Revision 1.7 - (hide 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 enderton 1.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 enderton 1.3 ntrl = length(page{inrow}); if ntrl ~= 1, ntrl = ntrl - 1; end
44     if ntrl == 1, cmp = 'Sep'; else, cmp = page{inrow}{end}; end
45 enderton 1.6 if ntrl == 1, ncol = 1; elseif isequal(cmp,'Sbs'), ncol = ntrl; else ncol = 1; end
46 enderton 1.1
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 enderton 1.7 if ~isequal(data{inrow}{incol},'Empty')
53 enderton 1.1
54 enderton 1.7 % 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 enderton 1.6 end
121 enderton 1.1 end
122     end
123    
124    
125     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
126     % Save plot, update figure counter %
127     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
128    
129     % Save plot as desired.
130     if SavePlots
131 enderton 1.2 if isequal(outputdir,'')
132     outputfile = [pagename,'.eps'];
133     else
134     outputfile = [outputdir,'/',pagename,'.eps'];
135     end
136 enderton 1.1 print('-depsc2',outputfile);
137     end

  ViewVC Help
Powered by ViewVC 1.1.22