/[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.5 - (show annotations) (download)
Fri Apr 29 17:34:39 2005 UTC (20 years, 3 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 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 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 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 DiagPlotDefaults;
60 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 if DiagDebug, disp([' DiagDebug: Subplot: ',mat2str([nrow,ncol,isp])]); end
94 if DiagDebug, disp([' DiagDebug: SP Range: ',mat2str([xi,yi,dx,dy])]); end
95 subplot(nrow,ncol,isp); hold on;
96 set(gca,'position',[xi,yi,dx,dy],'fontsize',fs_axis);
97
98 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 % (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 if isequal(outputdir,'')
124 outputfile = [pagename,'.eps'];
125 else
126 outputfile = [outputdir,'/',pagename,'.eps'];
127 end
128 print('-depsc2',outputfile);
129 end

  ViewVC Help
Powered by ViewVC 1.1.22