Changeset 6492
- Timestamp:
- 11/04/10 09:12:09 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/model/plot/plot_overlay.m
r6489 r6492 19 19 end 20 20 21 % radar power {{{1 21 %Get xlim and ylim (used to extract radar image) 22 xlim=getfieldvalue(options,'xlim',[min(md.x) max(md.x)]); 23 ylim=getfieldvalue(options,'ylim',[min(md.y) max(md.y)]); 24 25 %radar power {{{1 22 26 if ~any(isnan(md.sarxm)) & ~any(isnan(md.sarym)) & ~any(isnan(md.sarpwr)), 23 27 disp('plot_overlay info: the radar image held by the model is being used'); 24 28 else 25 %t1=clock; fprintf('%s','Extracting radar image...');26 29 disp('Extracting radar image...'); 27 xlim=getfieldvalue(options,'xlim',[min(x) max(x)])/getfieldvalue(options,'unit',1);28 ylim=getfieldvalue(options,'ylim',[min(y) max(y)])/getfieldvalue(options,'unit',1);29 30 md=radarpower(md,xlim,ylim,getfieldvalue(options,'highres',0)); 30 %t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);31 31 end%}}} 32 % InterpFromMeshToGrid -> data_grid {{{1 33 redo=1; 34 if (ischar(data) & isstruct(md.mesh2grid_parameters) & ismember(data,mesh2grid_parameters)), 35 choice=input(['mesh2grid has already been called for the parameter ''' data '''. Do you want to call it again (y/n)?'],'s'); 36 if strcmp(choice,'y') 37 disp('use previous mesh2grid result'); 38 x_m=md.mesh2grid_x_m; 39 y_m=md.mesh2grid_y_m; 40 data_grid=md.mesh2grid_data; 41 redo=0; 42 end 32 %InterpFromMeshToGrid -> data_grid {{{1 33 cornereast =min(xlim); 34 cornernorth=max(ylim); 35 xspacing=(max(xlim)-min(xlim))/(length(md.sarxm)); 36 yspacing=(max(ylim)-min(ylim))/(length(md.sarym)); 37 nlines=length(md.sarym); 38 ncols =length(md.sarxm); 39 disp('Interpolating data on grid...'); 40 [x_m y_m data_grid]=InterpFromMeshToGrid(elements,x,y,data,cornereast,cornernorth,xspacing,yspacing,nlines,ncols,NaN); 41 42 %Process data_grid 43 if exist(options,'caxis'), 44 caxis_opt=getfieldvalue(options,'caxis'); 45 data_grid(find(data_grid<caxis_opt(1)))=caxis_opt(1); 46 data_grid(find(data_grid>caxis_opt(2)))=caxis_opt(2); 47 data_min=caxis_opt(1); 48 data_max=caxis_opt(2); 49 else 50 data_min=min(data_grid(:)); 51 data_max=max(data_grid(:)); 43 52 end 44 if redo, 45 %apply caxis if required 46 if exist(options,'caxis'), 47 caxis_opt=getfieldvalue(options,'caxis'); 48 data(find(data<caxis_opt(1)))=caxis_opt(1); 49 data(find(data>caxis_opt(2)))=caxis_opt(2); 50 end 53 data_nan=find(isnan(data_grid)); 51 54 52 %use InterpFromMeshToGrid to get an gridded data to display using imagesc 53 xlim=getfieldvalue(options,'xlim',[min(x) max(x)]); 54 ylim=getfieldvalue(options,'ylim',[min(y) max(y)]); 55 cornereast =min(xlim); 56 cornernorth=max(ylim); 57 xspacing=(max(xlim)-min(xlim))/(length(md.sarxm)); 58 yspacing=(max(ylim)-min(ylim))/(length(md.sarym)); 59 nlines=length(md.sarym); 60 ncols =length(md.sarxm); 61 t1=clock; fprintf('%s','Interpolating data on grid...'); 62 [x_m y_m data_grid]=InterpFromMeshToGrid(elements,x,y,data,cornereast,cornernorth,xspacing,yspacing,nlines,ncols,getfieldvalue(options,'cutoff',1.5)); 63 t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']); 64 end%}}} 65 %Generate RGB image{{{1 55 %}}} 56 %Generate HSV image{{{1 66 57 67 %Build hsv color image from radar and results 68 radar=md.sarpwr; 58 %options 69 59 contrast=getfieldvalue(options,'contrast',1); 70 radar=radar.^(contrast);71 60 transparency=getfieldvalue(options,'alpha',1.5); %Rignot's setting: 1.5 72 cutoff=getfieldvalue(options,'cutoff',1.5); %Rignot's setting: 1.5 61 data_coba=linspace(data_min,data_max,256); %prepare colorbar (256 values between min and max) 62 data_grid(data_nan)=data_min; 73 63 74 %intensity 64 %hue (H) 65 h_data=bytscl(data_grid)/(255+1); %scale between 0 and 1 (log applied in processdata) 66 h_coba=bytscl(data_coba)/(255+1); %scale between 0 and 1 67 %saturation (S) 68 s_data=(0.5+10.^data_grid/125)/transparency;s_data(find(s_data>1))=1;s_data(find(s_data<0))=0; 69 s_coba=(0.5+10.^data_coba/125)/transparency;s_coba(find(s_coba>1))=1;s_coba(find(s_coba<0))=0; 70 s_data(data_nan)=0; 71 %intensity (V) 72 radar=(md.sarpwr).^(contrast); 75 73 v_data=radar/max(radar(:)); %For the principla image, use radar power as intensity 76 74 v_coba=ones(256,1); %For the colorbar: maximal intensity 77 75 78 %hue 79 data_grid(find(data_grid<cutoff))=cutoff; %cut all values below cutoff 80 data_coba=linspace(max(min(data(:)),cutoff),max(max(data(:)),cutoff),256);%prepare colorbar (256 values between min and max) 81 h_data=bytscl(data_grid)/(255+1); %scale between 0 and 1 (log applied in processdata) 82 h_coba=bytscl(data_coba)/(255+1); %scale between 0 and 1 83 84 %saturation 85 s_data=(0.5+10.^data_grid/125)/transparency;s_data(find(s_data>1))=1;s_data(find(s_data<0))=0; 86 s_coba=(0.5+10.^data_coba/125)/transparency;s_coba(find(s_coba>1))=1;s_coba(find(s_coba<0))=0; 87 s_data(find(data_grid==cutoff))=0; 88 s_coba(find(data_coba==cutoff))=0; 89 90 %Transform hsv to rgb 76 %}}} 77 %Transform HSV to RGB {{{1 91 78 image_hsv=zeros(size(data_grid,1),size(data_grid,2),3); 92 79 image_hsv(:,:,1)=h_data; … … 114 101 115 102 %last step: mesh overlay? 116 if exist(options,'edgecolor') 103 if exist(options,'edgecolor'), 117 104 A=elements(:,1); B=elements(:,2); C=elements(:,3); 118 105 patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor',getfieldvalue(options,'edgecolor')); 119 106 end 120 107 121 %Apply options {{{1122 108 %Apply options, without colorbar and without grid 123 109 iscolorbar=getfieldvalue(options,'colorbar',1); 124 options=changefieldvalue(options,'colorbar',0); 125 options= addfielddefault(options,'axis','equal off');126 options=addfielddefault(options,' colorbarpos',[0.80 0.70 0.02 0.15]);110 options=changefieldvalue(options,'colorbar',0); %do not create colorbar, we will take care of it 111 options=changefieldvalue(options,'caxis',[data_min data_max]); %force caxis so that the colorbar is ready 112 options=addfielddefault(options,'axis','equal off'); %default axis 127 113 applyoptions(md,data,options); 128 114 129 % colorbar115 %Create Colorbar {{{1 130 116 if iscolorbar, 131 117 132 %create colorbar with correct colors and position 133 %colorbar_rgb=buildoverlaycolorbar(md,data,getfieldvalue(options,'aplha',1.5)); 134 colorbar_handle=colorbar; 135 colorbar_image_handle=get(colorbar_handle,'Children'); 136 set(colorbar_image_handle,'CData',colorbar_rgb); 137 set(colorbar_handle,'Position',getfieldvalue(options,'colorbarpos')); 138 set(colorbar_handle,'FontSize',getfieldvalue(options,'colorbarfontsize',14)); 118 h=colorbar; 119 set(h,'FontSize',getfieldvalue(options,'colorbarfontsize',14)); 120 set(h,'YColor',getfieldvalue(options,'FontColor','k')); 121 h2=get(h,'Children'); 122 set(h2,'CData',colorbar_rgb); 123 %colormap([colorbar_rgb(:,1,1) colorbar_rgb(:,1,2) colorbar_rgb(:,1,3)]); 139 124 140 %modify ticks. 141 scalestring=get(colorbar_handle,'YTickLabel'); 142 numvalues=length(get(colorbar_handle,'YTick')); 143 144 scalestring=[]; 145 scaleminmax=[max(min(data),cutoff) max(data)]; 146 for i=1:numvalues, 147 fraction=(i-1)/(numvalues-1); 148 scalevalues(i)=scaleminmax(1)+(scaleminmax(2)-scaleminmax(1))*fraction; 149 if exist(options,'log'), 150 logvalue=getfieldvalue(options,'log'); 151 scalestring=[scalestring; sprintf('%-8.4g',round_ice(logvalue^scalevalues(i),2) )]; 152 else 153 scalestring=[scalestring; sprintf('%-8.4g',round_ice(scalevalues(i),2) )]; 154 end 125 if exist(options,'colorbarpos'), 126 set(h,'Position',getfieldvalue(options,'colorbarpos')); 155 127 end 156 set(colorbar_handle,'YTickLabel',scalestring);157 set(colorbar_handle,'YColor',getfieldvalue(options,'FontColor','k'));158 128 if exist(options,'colorbartitle'), 159 129 backup=gca; … … 163 133 axes(backup); 164 134 end 135 165 136 end%}}}
Note:
See TracChangeset
for help on using the changeset viewer.