/[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.5 - (hide annotations) (download)
Fri Apr 29 17:34:39 2005 UTC (20 years, 2 months ago) by molod
Branch: MAIN
Changes since 1.4: +7 -0 lines
A bunch of changes - lots of it to add coast lines as an option

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

  ViewVC Help
Powered by ViewVC 1.1.22