Newer
Older
function plot_Climatology(hMainFig, hPlotAxes)

jacques.grelet_ird.fr
committed
% Function to plot mean climatology and standard deviation
%
% Input
% -----
% hTsgGUI ............ Handel to the main user interface
% hPlotAxes .......... Handels to the 3 graphic axes
%
% Output
% ------
% none
%
% $Id$
% Get data after read_Climatology because it could be change tsg.levitus.type
% -------------------------------------------------------------------------
tsg = getappdata( hMainFig, 'tsg_data' );
% get climatology depth: 0 or 10m -> indice 1 or 2
% -------------------------------------------------
depth = tsg.preference.levitus_depth_value;
% if reading error, tsg.levitus.data is empty, no action
% ------------------------------------------------------
if isempty(tsg.levitus.data)
return
end

jacques.grelet_ird.fr
committed
% get last selected climatology structure
% ---------------------------------------
s = get(findobj('Tag', 'TAG_UIMENU_CLIMATO_MAIN'), 'Userdata');
% select time dimension for climatology from saved structure s
% ------------------------------------------------------------
time_dim = s.time;

jacques.grelet_ird.fr
committed
% shift to [-180 180] longitude range if needed
% ---------------------------------------------
if ~isempty(tsg.indcross)
lon = mod(lon+180,360)-180;
end

jacques.grelet_ird.fr
committed

jacques.grelet_ird.fr
committed
% valid parameters in climatology file are:
% -----------------------------------------
valid_parameters = {'SSTP','SSPS','DOX1'};

jacques.grelet_ird.fr
committed
% Get Climatology
% LATX(80) = -0.5 et LATX(81) = 0.5
% LONX(180) = -0.5 et LONX(181) = 0.5
% ---------------------------------------------
for i = 1:2
% get current parameter
% ----------------------
% for climatology, plot SSJT as SSTP (SST)
% ----------------------
if strcmp( para, 'SSJT' )
para = 'SSTP';
end
% goto next loop if parameter is not a member of climatology file
% ----------------------
if isempty(find(strcmp(para, valid_parameters),1))
continue
end
% for a valid parameter, plot climatology
% --------------------------------------
% prepare the interpolation
% ---------------------------
latc = tsg.levitus.data.WOA_LATX;
lonc = tsg.levitus.data.WOA_LONX;
clim = tsg.levitus.data.(['WOA_MEAN_' para]);
% remove sigleton dimension
% interpolation for 2-D gridded
% same for standard deviation
sclim = tsg.levitus.data.(['WOA_STD_' para]);
sclim = squeeze(sclim(time_dim,depth,:,:));
stdc = interp2(lonc,latc,sclim,lon,lat);
% Plot mean salinity climatology
% ------------------------------
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
if verLessThan('matlab', '9.1.0') % R2016b
% Select the axes
% ---------------
axes( hPlotAxes(i) );
line(dayd, meanc, ...
'Tag', ['TAG_LINE_CLIMATO_MEAN_' para], 'Linestyle', '-', 'Color','k');
% Plot with 3 standard deviation
% ------------------------------
line(dayd, meanc + 3 * stdc, ...
'Tag', ['TAG_LINE_CLIMATO_STDDEV_PLUS_' para], 'Linestyle', '-', 'Color','r');
line(dayd, meanc - 3 * stdc, ...
'Tag', ['TAG_LINE_CLIMATO_STDDEV_MINUS_' para], 'Linestyle', '-', 'Color','r');
% Plot marker if climatological value has no neighbour
% --------------------------------------------------
indnon=find(isfinite([meanc',nan]) & isnan(circshift([meanc',nan],[0 1]))...
& isnan(circshift([meanc',nan],[0 -1])));
if ~isempty(indnon)
line(dayd(indnon), meanc(indnon), ...
'Tag', ['TAG_LINE_CLIMATO_MEAN_' para], 'Linestyle', 'none', 'Color','k','Marker','d');
line(dayd(indnon), meanc(indnon) + 3 * stdc(indnon), ...
'Tag', ['TAG_LINE_CLIMATO_STDDEV_PLUS_' para], 'Linestyle', 'none', 'Color','r','Marker','d');
line(dayd(indnon), meanc(indnon) - 3 * stdc(indnon), ...
'Tag', ['TAG_LINE_CLIMATO_STDDEV_MINUS_' para], 'Linestyle', 'none', 'Color','r','Marker','d');
end
else
line(hPlotAxes(i), dayd, meanc, ...
'Tag', ['TAG_LINE_CLIMATO_MEAN_' para], 'Linestyle', '-', 'Color','k');
% Plot with 3 standard deviation
% ------------------------------
line(hPlotAxes(i), dayd, meanc + 3 * stdc, ...
'Tag', ['TAG_LINE_CLIMATO_STDDEV_PLUS_' para], 'Linestyle', '-', 'Color','r');
line(hPlotAxes(i), dayd, meanc - 3 * stdc, ...
'Tag', ['TAG_LINE_CLIMATO_STDDEV_MINUS_' para], 'Linestyle', '-', 'Color','r');
% Plot marker if climatological value has no neighbour
% --------------------------------------------------
indnon=find(isfinite([meanc',nan]) & isnan(circshift([meanc',nan],[0 1]))...
& isnan(circshift([meanc',nan],[0 -1])));
if ~isempty(indnon)
line(hPlotAxes(i), dayd(indnon), meanc(indnon), ...
'Tag', ['TAG_LINE_CLIMATO_MEAN_' para], 'Linestyle', 'none', 'Color','k','Marker','d');
line(hPlotAxes(i), dayd(indnon), meanc(indnon) + 3 * stdc(indnon), ...
'Tag', ['TAG_LINE_CLIMATO_STDDEV_PLUS_' para], 'Linestyle', 'none', 'Color','r','Marker','d');
line(hPlotAxes(i), dayd(indnon), meanc(indnon) - 3 * stdc(indnon), ...
'Tag', ['TAG_LINE_CLIMATO_STDDEV_MINUS_' para], 'Linestyle', 'none', 'Color','r','Marker','d');
end
gael.alory_legos.obs-mip.fr
committed
end
end
% save tsg structure
% ------------------
setappdata( hMainFig, 'tsg_data', tsg );
% Update the map if already displayed
% -----------------------------------
hMapFig = get(get(hPlotAxes(4),'parent'),'parent');
if strcmp( get(hMapFig,'visible'), 'on') == 1
erase_Line( hPlotAxes, 4 );
plot_map( hMainFig, hPlotAxes);