Skip to content
Snippets Groups Projects
plot_Climatology.m 3.96 KiB
Newer Older
  • Learn to ignore specific revisions
  • function plot_Climatology2(hMainFig, hPlotAxes)
    
    % 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$
    
    
    % Read surface climatology (annual, seasonal or monthly)
    % ------------------------------------------------------
    
    read_Climatology(hMainFig);
    
    % Get data after read_Climatology because it could be change tsg.levitus.type
    % -------------------------------------------------------------------------
    tsg = getappdata( hMainFig, 'tsg_data' );
    
    
    jacques.grelet_ird.fr's avatar
    jacques.grelet_ird.fr committed
    % 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
    
    % get last selected climatology structure
    % ---------------------------------------
    s = get(findobj('Tag', 'TAG_UIMENU_CLIMATO_MAIN'), 'Userdata');
    
    % select time dimension for climatology form saved structure s
    % ------------------------------------------------------------
    time_dim = s.time;
    
    lat=tsg.LATX;
    lon=tsg.LONX;
    
    % shift to [-180 180] longitude range if needed
    % ---------------------------------------------
    if ~isempty(tsg.indcross)
        lon=mod(lon+180,360)-180;
    end
    
    dayd = tsg.DAYD;
    
    % valid parameters in climatology file are:
    % -----------------------------------------
    valid_parameters = {'SSTP','SSPS','DOX1'};
    
    
    % 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
      % ----------------------
    
    jacques.grelet_ird.fr's avatar
    jacques.grelet_ird.fr committed
      para = tsg.plot.parameter{i};
    
      
      % 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
    
      meanc = zeros(size(dayd));
      stdc  = zeros(size(dayd));
      latc=tsg.levitus.data.WOA_LATX;
      lonc=tsg.levitus.data.WOA_LONX;
      clim=tsg.levitus.data.(['WOA_MEAN_' para]);
      clim=squeeze(clim(time_dim,depth,:,:));
      meanc=interp2(lonc,latc,clim,lon,lat,'nearest');
      
      sclim=tsg.levitus.data.(['WOA_STD_' para]);
      sclim=squeeze(sclim(time_dim,depth,:,:));
      stdc=interp2(lonc,latc,sclim,lon,lat,'nearest');
    
    
      % Select the axes
      % ---------------
      axes( hPlotAxes(i) );
    
    
      % Plot mean salinity climatology
      % ------------------------------
    
      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])));
    
          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
      
    
    
    
    % save tsg structure
    % ------------------
    setappdata( hMainFig, 'tsg_data', tsg );