/[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.6 - (hide 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 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.6 % 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 enderton 1.1 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 molod 1.5 DiagPlotDefaults;
62 enderton 1.1 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 enderton 1.6 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 enderton 1.1 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 enderton 1.6
93 enderton 1.1 xi = dxl + (incol-1)*(dx+dxm);
94     yi = 1-dyt-inrow*dy-(inrow-1)*dym;
95    
96     isp = (inrow-1)*ncol+incol;
97 enderton 1.4 if DiagDebug, disp([' DiagDebug: Subplot: ',mat2str([nrow,ncol,isp])]); end
98     if DiagDebug, disp([' DiagDebug: SP Range: ',mat2str([xi,yi,dx,dy])]); end
99 enderton 1.1 subplot(nrow,ncol,isp); hold on;
100     set(gca,'position',[xi,yi,dx,dy],'fontsize',fs_axis);
101    
102 molod 1.5 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 enderton 1.1 % (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 enderton 1.6 clear contint units crange
117 enderton 1.1 end
118     end
119    
120    
121     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
122     % Save plot, update figure counter %
123     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
124    
125     % Save plot as desired.
126     if SavePlots
127 enderton 1.2 if isequal(outputdir,'')
128     outputfile = [pagename,'.eps'];
129     else
130     outputfile = [outputdir,'/',pagename,'.eps'];
131     end
132 enderton 1.1 print('-depsc2',outputfile);
133     end

  ViewVC Help
Powered by ViewVC 1.1.22