Changeset 546 for trunk/src/plot_field.m


Ignore:
Timestamp:
Sep 17, 2012, 10:47:38 PM (11 years ago)
Author:
sommeria
Message:

bugs corrected for tps projection on a grid + pb of colorbar display solved

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/plot_field.m

    r537 r546  
    7676%    .Vectors.MaxC = imposed maximum of the scalar field used for vector color;
    7777%
    78 % PosColorbar: if not empty, display a colorbar for B&W images
    79 %               imposed position of the colorbar (ex [0.821 0.471 0.019 0.445])
     78% PosColorbar: % if absent, no action on colorbar
     79%              % if empty, suppress any existing colorbar
     80%              % if not empty, display a colorbar for B&W images at position PosColorbar
     81%                expressed in figure relative unit (ex [0.821 0.471 0.019 0.445])
    8082
    8183%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
     
    99101%% default input and output
    100102if ~exist('PlotParam','var'),PlotParam=[];end;
    101 if ~exist('PosColorbar','var'),PosColorbar=[];end;
    102103PlotType='text'; %default
    103104PlotParamOut=PlotParam;%default
     
    110111index_1D=[];
    111112index_0D=[];
    112 % errormsg=check_field_structure(Data);
    113 % if ~isempty(errormsg)
    114 %     msgbox_uvmat('ERROR',['input of plot_field/check_field_structure: ' errormsg])
    115 %     display(['input of plot_field/check_field_structure: ' errormsg])
    116 %     return
    117 % end
    118113% check the cells of fields :
    119114[CellInfo,NbDimArray,errormsg]=find_field_cells(Data);
     
    126121index_3D=find(NbDimArray>2,1);
    127122if ~isempty(index_3D)
    128 %     if isfield(Data,'NbDimArray')&& isequal(Data.NbDimArray,2)
    129 %         index_2D=[index_2D index_3D];
    130 %     else
    131         msgbox_uvmat('ERROR','volume plot not implemented yet');
    132         return
    133 %     end
     123    msgbox_uvmat('ERROR','volume plot not implemented yet');
     124    return
    134125end
    135126index_2D=find(NbDimArray==2);%find 2D fields
    136127index_1D=find(NbDimArray==1);
    137128index_0D=find(NbDimArray==0);
    138 %remove coordinates variables from 1D plot
    139 % if ~isempty(index_2D)
    140 %     for ivar=1:length(index_1D)
    141 %         if isequal(CellVarIndex{index_1D(ivar)},VarRole{index_1D(ivar)}.coord)
    142 %             index_1D(ivar)=0;
    143 %         end
    144 %     end
    145 %     index_1D=index_1D(index_1D>0);
    146 % end
    147129
    148130%% test axes and figure
     
    194176%% 2D plots
    195177if isempty(index_2D)
    196     plot_plane([],[],haxes);%removes images or vector plots in the absence of 2D field plot
     178    plot_plane([],[],haxes,[],[]);%removes images or vector plots in the absence of 2D field plot
    197179else  %plot 2D field
     180    if ~exist('PosColorbar','var'),PosColorbar=[];end;
    198181    [tild,PlotParamOut,PlotType,errormsg]=plot_plane(Data,CellInfo(index_2D),haxes,PlotParam,PosColorbar);
    199182    AxeData.NbDim=2;
     
    539522%default plotting parameters
    540523PlotType='plane';%default
    541 if ~exist('PlotParam','var')
    542     PlotParam=[];
    543 end
     524% if ~exist('PlotParam','var')
     525%     PlotParam=[];
     526% end
    544527
    545528if ~isfield(PlotParam,'Scalar')
     
    936919            set(hima,'YData',AY);
    937920        end
    938 
     921       
    939922        % set the transparency to 0.5 if vectors are also plotted
    940923        if isfield(PlotParam.Scalar,'Opacity')&& ~isempty(PlotParam.Scalar.Opacity)
     
    952935   
    953936    %display the colorbar code for B/W images if Poscolorbar not empty
    954     if siz==2 && exist('PosColorbar','var')&& ~isempty(PosColorbar)
    955         if isempty(hcol)||~ishandle(hcol)
    956             hcol=colorbar;%create new colorbar
    957         end
    958         if length(PosColorbar)==4
    959             set(hcol,'Position',PosColorbar)
    960         end
    961         %YTick=0;%default
    962         if MaxA>MinA
    963             if CheckContour
    964                 colbarlim=get(hcol,'YLim');
    965                 scale_bar=(colbarlim(2)-colbarlim(1))/(abscontmax-abscontmin);
    966                 YTick=cont_pos(2:end-1);
    967                 YTick_scaled=colbarlim(1)+scale_bar*(YTick-abscontmin);
    968                 set(hcol,'YTick',YTick_scaled);
    969             elseif (isfield(PlotParam.Scalar,'CheckBW') && isequal(PlotParam.Scalar.CheckBW,1))||isa(A,'uint8')|| isa(A,'uint16')%images
    970                 hi=get(hcol,'children');
    971                 if iscell(hi)%multiple images in colorbar
    972                     hi=hi{1};
    973                 end
    974                 set(hi,'YData',[MinA MaxA])
    975                 set(hi,'CData',(1:256)')
    976                 set(hcol,'YLim',[MinA MaxA])
    977                 YTick=colbartick(MinA,MaxA);
    978                 set(hcol,'YTick',YTick)
    979             else
    980                 hi=get(hcol,'children');
    981                 if iscell(hi)%multiple images in colorbar
    982                     hi=hi{1};
    983                 end
    984                 set(hi,'YData',[MinA MaxA])
    985                 set(hi,'CData',(1:64)')
    986                 YTick=colbartick(MinA,MaxA);
    987                 set(hcol,'YLim',[MinA MaxA])
    988                 set(hcol,'YTick',YTick)
    989             end
    990             set(hcol,'Yticklabel',num2str(YTick'));
    991         end
    992     elseif ishandle(hcol)
    993         delete(hcol); %erase existing colorbar if not needed
     937    if ~isempty(PosColorbar)
     938        if siz==2 && exist('PosColorbar','var')
     939            if isempty(hcol)||~ishandle(hcol)
     940                hcol=colorbar;%create new colorbar
     941            end
     942            if length(PosColorbar)==4
     943                set(hcol,'Position',PosColorbar)
     944            end
     945            %YTick=0;%default
     946            if MaxA>MinA
     947                if CheckContour
     948                    colbarlim=get(hcol,'YLim');
     949                    scale_bar=(colbarlim(2)-colbarlim(1))/(abscontmax-abscontmin);
     950                    YTick=cont_pos(2:end-1);
     951                    YTick_scaled=colbarlim(1)+scale_bar*(YTick-abscontmin);
     952                    set(hcol,'YTick',YTick_scaled);
     953                elseif (isfield(PlotParam.Scalar,'CheckBW') && isequal(PlotParam.Scalar.CheckBW,1))||isa(A,'uint8')|| isa(A,'uint16')%images
     954                    hi=get(hcol,'children');
     955                    if iscell(hi)%multiple images in colorbar
     956                        hi=hi{1};
     957                    end
     958                    set(hi,'YData',[MinA MaxA])
     959                    set(hi,'CData',(1:256)')
     960                    set(hcol,'YLim',[MinA MaxA])
     961                    YTick=colbartick(MinA,MaxA);
     962                    set(hcol,'YTick',YTick)
     963                else
     964                    hi=get(hcol,'children');
     965                    if iscell(hi)%multiple images in colorbar
     966                        hi=hi{1};
     967                    end
     968                    set(hi,'YData',[MinA MaxA])
     969                    set(hi,'CData',(1:64)')
     970                    YTick=colbartick(MinA,MaxA);
     971                    set(hcol,'YLim',[MinA MaxA])
     972                    set(hcol,'YTick',YTick)
     973                end
     974                set(hcol,'Yticklabel',num2str(YTick'));
     975            end
     976        elseif ishandle(hcol)
     977            delete(hcol); %erase existing colorbar if not needed
     978        end
    994979    end
    995980else%no scalar plot
     
    997982        delete(hima)
    998983    end
    999     if ~isempty(hcol)&& ishandle(hcol)
     984    if ~isempty(PosColorbar) && ~isempty(hcol)&& ishandle(hcol)
    1000985        delete(hcol)
    1001986    end
     
    11001085    PlotParamOut=rmfield(PlotParamOut,'Vectors');
    11011086end
    1102 
    1103 %listfields={'AY','AX','A','X','Y','U','V','C','W','F','FF'};
    1104 %listdim={'AY','AX',{'AY','AX'},'nb_vectors','nb_vectors','nb_vectors','nb_vectors','nb_vectors','nb_vectors','nb_vectors','nb_vectors'};
    1105 %Role={'coord_y','coord_x','scalar','coord_x','coord_y','vector_x','vector_y','scalar','vector_z','warnflag','errorflag'};
    1106 %ind_select=[];
    1107 nbvar=0;
     1087% nbvar=0;
    11081088
    11091089%store the coordinate extrema occupied by the field
     
    11401120        end
    11411121    end
    1142 %     PlotParamOut.RangeX=[XMin XMax]; %range of x, to be stored in the user data of the plot axes
    1143 %     PlotParamOut.RangeY=[YMin YMax]; %range of x, to be stored in the user data of the plot axes
    1144 %     if ~fix_lim
    1145         PlotParamOut.Coordinates.MinX=XMin;
    1146         PlotParamOut.Coordinates.MaxX=XMax;
    1147         PlotParamOut.Coordinates.MinY=YMin;
    1148         PlotParamOut.Coordinates.MaxY=YMax;
    1149         if XMax>XMin
    1150             set(haxes,'XLim',[XMin XMax]);% set x limits of frame in axes coordinates
    1151         end
    1152         if YMax>YMin
    1153             set(haxes,'YLim',[YMin YMax]);% set x limits of frame in axes coordinates
    1154         end
    1155 %     end
     1122    PlotParamOut.Coordinates.MinX=XMin;
     1123    PlotParamOut.Coordinates.MaxX=XMax;
     1124    PlotParamOut.Coordinates.MinY=YMin;
     1125    PlotParamOut.Coordinates.MaxY=YMax;
     1126    if XMax>XMin
     1127        set(haxes,'XLim',[XMin XMax]);% set x limits of frame in axes coordinates
     1128    end
     1129    if YMax>YMin
     1130        set(haxes,'YLim',[YMin YMax]);% set x limits of frame in axes coordinates
     1131    end
    11561132    set(haxes,'YDir','normal')
    11571133    set(get(haxes,'XLabel'),'String',[XName ' (' x_units ')']);
     
    11601136    PlotParamOut.Coordinates.y_units=y_units;
    11611137end
    1162         if isfield(PlotParam,'Coordinates') && isfield(PlotParam.Coordinates,'CheckFixAspectRatio') && isequal(PlotParam.Coordinates.CheckFixAspectRatio,1)
    1163             set(haxes,'DataAspectRatioMode','manual')
    1164             if isfield(PlotParam.Coordinates,'AspectRatio')
    1165                 set(haxes,'DataAspectRatio',[PlotParam.Coordinates.AspectRatio 1 1])
    1166             end
    1167         else
    1168             set(haxes,'DataAspectRatioMode','auto')
    1169         end
     1138if isfield(PlotParam,'Coordinates') && isfield(PlotParam.Coordinates,'CheckFixAspectRatio') && isequal(PlotParam.Coordinates.CheckFixAspectRatio,1)
     1139    set(haxes,'DataAspectRatioMode','manual')
     1140    if isfield(PlotParam.Coordinates,'AspectRatio')
     1141        set(haxes,'DataAspectRatio',[PlotParam.Coordinates.AspectRatio 1 1])
     1142    end
     1143else
     1144    set(haxes,'DataAspectRatioMode','auto')
     1145end
    11701146%-------------------------------------------------------------------
    11711147% --- function for plotting vectors
Note: See TracChangeset for help on using the changeset viewer.