% qscat_daily_m_plot.m % uses m_map to plot quikscat data for a given day % based on code by Kent Moore % modification by Ian Renfrew - May 2006, March 2008 close all clear all iprint = 1; % set to 1 or 2 to print png or epsc files i_ws_wd = 0; % set this to 1 if windspeed & wd, set to 0 if u & v % set date here--------------- year=2007; month=2; monthstr='02'; days=[21]; %load in months worth of data dira = ' F:\data\gfd\quikscat\data\'; %file=strcat([dira 'qscat_',monthstr,'_',num2str(year)]); % for QSCAT climatology paper 2005 file=strcat([dira 'qscat_v03a_',monthstr,'_',num2str(year)]); % for GFD period if (i_ws_wd ==1) eval(strcat('load',file,' wind_speed wind_dir latitude longitude ')); elseif (i_ws_wd ==0) eval(strcat('load',file,' u v latitude longitude ')); end; %limits for plot lon_lim=[310 340]; lat_lim=[56 65]; %subset index_lat=find(latitude > lat_lim(1) & latitude < lat_lim(2)); index_lon=find(longitude > lon_lim(1) & longitude < lon_lim(2)); latitude=latitude(index_lat); longitude=longitude(index_lon); %for wind vectors, define lat lon matrices lon_vect=transpose(repmat(transpose(longitude),1,length(latitude))); lat_vect=repmat(transpose(latitude),1,length(longitude)); %set up index for plotting vectors, in this case plot every 2nd data point ii=[1:2:length(latitude)];% jj=[1:2:length(longitude)]; %position of label for reference wind vector lon_arrow=lon_lim(2)-5; lat_arrow=lat_lim(1)-1; %define min/max/inc for wind speed cmin=0; cmax=45; cinc=5; max_vect=30; %set cbar_flag to 1 to plot colourbar cbar_flag=1; % loop over days and passes for day=days for pass=[1 2] figure(pass) if (i_ws_wd ==1) v2=squeeze(wind_speed(day,pass,index_lat,index_lon)).*cos(2*pi*squeeze(wind_dir(day,pass,index_lat,index_lon))/360); u2=squeeze(wind_speed(day,pass,index_lat,index_lon)).*sin(2*pi*squeeze(wind_dir(day,pass,index_lat,index_lon))/360); ws=squeeze(wind_speed(day,pass,index_lat,index_lon)); elseif (i_ws_wd == 0) v2=squeeze(v(day,pass,index_lat,index_lon)); u2=squeeze(u(day,pass,index_lat,index_lon)); ws = (u2.*u2 + v2.*v2).^0.5; end; %set first/last row/column to NaN, this helps to make sure no vectors %overlap plot boundaries u2(1,:)=NaN; u2(end,:)=NaN; u2(:,1)=NaN; u2(:,end)=NaN; %out_file=strcat(' C:\data\gfd\quikscat_climatology\pics\detail_',num2str(year),'_',monthstr,'_',num2str(day),'_',num2str(pass)); out_file=strcat(' F:\data\gfd\quikscat\gfd_pics\gfd_qscat_',num2str(year),'_',monthstr,'_',num2str(day),'_',num2str(pass)); %------------------- % do plot %------------------- m_proj('lambert','lat',lat_lim,'lon',lon_lim) % axes('position',[0.15 0.15 0.8 0.80]); m_pcolor(longitude,latitude,ws); hold on caxis([cmin cmax]) shading flat m_grid('box','fancy','tickdir','in','xtick',[lon_lim(1):5:lon_lim(2)],'ytick',[lat_lim(1):2:lat_lim(2)],'FontName','Times','FontSize',14); %m_coast('linewidth',2,'color','k'); % simple coastline m_gshhs_i('patch', [.5 .5 .5]); % detailed coastline scf=4*max_vect; m_vec(scf,lon_vect(ii,jj),lat_vect(ii,jj),u2(ii,jj),v2(ii,jj),'k','headwidth',NaN,'headlength',4,'shaftwidth',.25); hold on [hp,ht]=m_vec(scf,lon_arrow,lat_arrow,max_vect,0,'k','headwidth',NaN,'headlength',4,'shaftwidth',.25,'key',strcat(num2str(max_vect),' m s^-^1')); %scaling arrow set(ht,'FontName','Times','FontSize',14) title(['QuikSCAT ' num2str(year) ' ' monthstr ' ' num2str(day) ' pass= ' num2str(pass)]) if cbar_flag cbh = colorbar; cdiv=(cmax-cmin)/cinc+1 ; set(cbh,'YTick', cmin:5:cmax) set(cbh,'FontName','Times','FontSize',14) cb_pos = get(cbh,'position'); set(cbh,'position', [cb_pos(1)+0.07 0.3 0.035 0.5]); end; if (iprint ==1) disp(['printing ' out_file]) eval(strcat('print -dpng ',out_file, '.png')) elseif (iprint == 2) orient portrait disp(['printing ' out_file]) eval(strcat('print -depsc ',out_file, '.eps')) end; end; end;