Changeset 569 for trunk/src/plot_field.m


Ignore:
Timestamp:
Feb 19, 2013, 7:19:07 PM (8 years ago)
Author:
sommeria
Message:

many corrections; introduction of browse_data to scan the whole set of data, used also to replicate data in calibration mode

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/plot_field.m

    r546 r569  
    102102if ~exist('PlotParam','var'),PlotParam=[];end;
    103103PlotType='text'; %default
    104 PlotParamOut=PlotParam;%default
    105104if ~isfield(PlotParam,'Coordinates')
    106105    PlotParam.Coordinates=[];
    107106end
     107PlotParamOut=PlotParam;%default
    108108
    109109%% check input structure
     
    152152    haxes=axes;
    153153    set(haxes,'position',[0.13,0.2,0.775,0.73])
    154     PlotParam.NextPlot='add'; %parameter for plot_profile and plot_his
     154    PlotParamOut.NextPlot='add'; %parameter for plot_profile
    155155else
    156156    hfig=get(haxes,'parent');
     
    160160
    161161%% set axes properties
    162 if isfield(PlotParam.Coordinates,'CheckFixLimits') && isequal(PlotParam.Coordinates.CheckFixLimits,1)  %adjust the graph limits
     162if isfield(PlotParamOut.Coordinates,'CheckFixLimits') && isequal(PlotParamOut.Coordinates.CheckFixLimits,1)  %adjust the graph limits
    163163    set(haxes,'XLimMode', 'manual')
    164164    set(haxes,'YLimMode', 'manual')
     
    171171% end
    172172errormsg='';
    173 PlotParamOut.Coordinates=[]; %default output
     173%PlotParamOut.Coordinates=[]; %default output
    174174AxeData=get(haxes,'UserData');
    175175
     
    179179else  %plot 2D field
    180180    if ~exist('PosColorbar','var'),PosColorbar=[];end;
    181     [tild,PlotParamOut,PlotType,errormsg]=plot_plane(Data,CellInfo(index_2D),haxes,PlotParam,PosColorbar);
     181    [tild,PlotParamOut,PlotType,errormsg]=plot_plane(Data,CellInfo(index_2D),haxes,PlotParamOut,PosColorbar);
    182182    AxeData.NbDim=2;
    183183    if testzoomaxes && isempty(errormsg)
    184         [zoomaxes,PlotParamOut,tild,errormsg]=plot_plane(Data,CellInfo(index_2D),zoomaxes,PlotParam,PosColorbar);
     184        [zoomaxes,PlotParamOut,tild,errormsg]=plot_plane(Data,CellInfo(index_2D),zoomaxes,PlotParamOut,PosColorbar);
    185185        AxeData.ZoomAxes=zoomaxes;
    186186    end
     
    193193    end
    194194else %plot 1D field (usual graph y vs x)
    195     Coordinates=plot_profile(Data,CellInfo(index_1D),haxes,PlotParam.Coordinates);%
     195    PlotParamOut.Coordinates=plot_profile(Data,CellInfo(index_1D),haxes,PlotParamOut.Coordinates);%
    196196    if testzoomaxes
    197         [zoomaxes,Coordinates]=plot_profile(Data,CellInfo(index_1D),zoomaxes,PlotParam.Coordinates);
     197        [zoomaxes,PlotParamOut.Coordinates]=plot_profile(Data,CellInfo(index_1D),zoomaxes,PlotParamOut.Coordinates);
    198198        AxeData.ZoomAxes=zoomaxes;
    199199    end
    200     if ~isempty(Coordinates)
    201         PlotParamOut.Coordinates=Coordinates;
    202     end
     200%     if ~isempty(Coordinates)
     201%         PlotParamOut.Coordinates=Coordinates;
     202%     end
    203203    PlotType='line';
    204204end
     
    231231%     AxeData=[];
    232232    if isfield(PlotParamOut,'MinX')
    233         AxeData.RangeX=[PlotParamOut.MinX PlotParamOut.MaxX];%'[PlotParamOut.MinX PlotParamOut.MaxX];
    234         AxeData.RangeY=[PlotParamOut.MinY PlotParamOut.MaxY];%[PlotParamOut.MinY PlotParamOut.MaxY]
     233        AxeData.RangeX=[PlotParamOut.MinX PlotParamOut.MaxX];
     234        AxeData.RangeY=[PlotParamOut.MinY PlotParamOut.MaxY];
    235235    end
    236236    set(haxes,'UserData',AxeData)
     
    359359ytitle='';
    360360test_newplot=1;
    361 
     361MinX=[];
     362MaxX=[];
     363MinY_cell=[];
     364MaxY_cell=[];
    362365%loop on input  fields
    363366for icell=1:numel(CellInfo)
     
    367370    coord_x_name{icell}=data.ListVarName{coord_x_index};
    368371    coord_x{icell}=data.(data.ListVarName{coord_x_index});%coordinate variable set as coord_x
    369     if isempty(find(strcmp(coord_x_name{icell},coord_x_name(1:end-1)))) %xtitle not already selected
     372    if isempty(find(strcmp(coord_x_name{icell},coord_x_name(1:end-1)), 1)) %xtitle not already selected
    370373        xtitle=[xtitle coord_x_name{icell}];
    371374        if isfield(data,'VarAttribute')&& numel(data.VarAttribute)>=coord_x_index && isfield(data.VarAttribute{coord_x_index},'units')
     
    375378        end
    376379    end
    377     XMin(icell)=min(coord_x{icell});
    378     XMax(icell)=max(coord_x{icell});
     380    MinX(icell)=min(coord_x{icell});
     381    MaxX(icell)=max(coord_x{icell});
    379382    testplot(coord_x_index)=0;
    380383    if isfield(CellInfo{icell},'VarIndex_ancillary')
     
    399402        charplot_0='''-''';
    400403    end
    401     YMin=0;
    402     YMax=1;%default
     404    MinY=[];
     405    MaxY=[];%default
     406   
     407    nbplot=0;
    403408    for ivar=1:length(VarIndex)
    404409        if testplot(VarIndex(ivar))
    405410            VarName=data.ListVarName{VarIndex(ivar)};
     411            nbplot=nbplot+1;
    406412            ytitle=[ytitle VarName];
    407413            if isfield(data,'VarAttribute')&& numel(data.VarAttribute)>=VarIndex(ivar) && isfield(data.VarAttribute{VarIndex(ivar)},'units')
     
    412418            eval(['data.' VarName '=squeeze(data.' VarName ');'])
    413419            %eval(['min(data.' VarName ')'])
    414             YMin(ivar)=min(min(data.(VarName)));
    415             YMax(ivar)=max(max(data.(VarName)));
     420            MinY(ivar)=min(min(data.(VarName)));
     421            MaxY(ivar)=max(max(data.(VarName)));
    416422            plotstr=[plotstr 'coord_x{' num2str(icell) '},data.' VarName ',' charplot_0 ','];
    417423            eval(['nbcomponent2=size(data.' VarName ',2);']);
     
    429435        end
    430436    end
    431     YMin_cell(icell)=min(YMin);
    432     YMax_cell(icell)=max(YMax);
     437    if ~isempty(MinY)
     438    MinY_cell(icell)=min(MinY);
     439    MaxY_cell(icell)=max(MaxY);
     440    end
    433441end
    434442
     
    478486    end
    479487    htitle=title(title_str);
    480 %     txt=ver('MATLAB');
    481 %     Release=txt.Release;
    482 %     relnumb=str2double(Release(3:4));
    483 %     if relnumb >= 14
    484488    set(htitle,'Interpreter','none')% desable tex interpreter
    485 %     end
    486489end
    487490
    488491%% determine axes bounds
    489 %CoordinatesOut.RangeX=[min(XMin) max(XMax)];
    490 %CoordinatesOut.RangeY=[min(YMin_cell) max(YMax_cell)];
    491492fix_lim=isfield(Coordinates,'CheckFixLimits') && Coordinates.CheckFixLimits;
     493check_lim=isfield(Coordinates,'MinX')&&isfield(Coordinates,'MaxX')&&isfield(Coordinates,'MinY')&&isfield(Coordinates,'MaxY');
    492494if fix_lim
    493     if ~isfield(Coordinates,'MinX')||~isfield(Coordinates,'MaxX')||~isfield(Coordinates,'MinY')||~isfield(Coordinates,'MaxY')
    494         fix_lim=0; %free limits if lits are not set,
     495    if ~check_lim
     496        fix_lim=0; %free limits if limits are not set,
    495497    end
    496498end
     
    498500    set(haxes,'XLim',[Coordinates.MinX Coordinates.MaxX])
    499501    set(haxes,'YLim',[Coordinates.MinY Coordinates.MaxY])
    500 else   
    501     CoordinatesOut.MinX=min(XMin);
    502     CoordinatesOut.MaxX=max(XMax);
    503     CoordinatesOut.MinY=min(YMin_cell);
    504     CoordinatesOut.MaxY=max(YMax_cell);
     502else
     503    if ~isempty(MinX)
     504        if check_lim
     505            CoordinatesOut.MinX=min(min(MinX),CoordinatesOut.MinX);
     506            CoordinatesOut.MaxX=max(max(MaxX),CoordinatesOut.MaxX);
     507        else
     508            CoordinatesOut.MinX=min(MinX);
     509            CoordinatesOut.MaxX=max(MaxX);
     510        end
     511    end
     512    if ~isempty(MinY_cell)
     513        if check_lim
     514            CoordinatesOut.MinY=min(min(MinY_cell),CoordinatesOut.MinY);
     515            CoordinatesOut.MaxY=max(max(MaxY_cell),CoordinatesOut.MaxY);
     516        else
     517            CoordinatesOut.MinY=min(MinY_cell);
     518            CoordinatesOut.MaxY=max(MaxY_cell);
     519        end
     520    end
    505521end
    506522
     
    791807        PlotParamOut.Scalar.MinA=MinA;
    792808        PlotParamOut.Scalar.MaxA=MaxA;
     809        PlotParamOut.Scalar.Npx=size(A,2);
     810        PlotParamOut.Scalar.Npy=size(A,1);
    793811        % case of contour plot
    794812        if CheckContour
     
    10891107%store the coordinate extrema occupied by the field
    10901108if ~isempty(Data)
    1091     XMin=[];
    1092     XMax=[];
    1093     YMin=[];
    1094     YMax=[];
     1109    MinX=[];
     1110    MaxX=[];
     1111    MinY=[];
     1112    MaxY=[];
    10951113    fix_lim=isfield(PlotParam.Coordinates,'CheckFixLimits') && PlotParam.Coordinates.CheckFixLimits;
    10961114    if fix_lim
    10971115        if isfield(PlotParam.Coordinates,'MinX')&&isfield(PlotParam.Coordinates,'MaxX')&&isfield(PlotParam.Coordinates,'MinY')&&isfield(PlotParam.Coordinates,'MaxY')
    1098             XMin=PlotParam.Coordinates.MinX;
    1099             XMax=PlotParam.Coordinates.MaxX;
    1100             YMin=PlotParam.Coordinates.MinY;
    1101             YMax=PlotParam.Coordinates.MaxY;
    1102         end  %else PlotParamOut.XMin =PlotParam.XMin...
     1116            MinX=PlotParam.Coordinates.MinX;
     1117            MaxX=PlotParam.Coordinates.MaxX;
     1118            MinY=PlotParam.Coordinates.MinY;
     1119            MaxY=PlotParam.Coordinates.MaxY;
     1120        end  %else PlotParamOut.MinX =PlotParam.MinX...
    11031121    else
    11041122        if test_ima %both background image and vectors coexist, take the wider bound
    1105             XMin=min(AX);
    1106             XMax=max(AX);
    1107             YMin=min(AY);
    1108             YMax=max(AY);
     1123            MinX=min(AX);
     1124            MaxX=max(AX);
     1125            MinY=min(AY);
     1126            MaxY=max(AY);
    11091127            if test_vec
    1110                 XMin=min(XMin,min(vec_X));
    1111                 XMax=max(XMax,max(vec_X));
    1112                 YMin=min(YMin,min(vec_Y));
    1113                 YMax=max(YMax,max(vec_Y));
     1128                MinX=min(MinX,min(vec_X));
     1129                MaxX=max(MaxX,max(vec_X));
     1130                MinY=min(MinY,min(vec_Y));
     1131                MaxY=max(MaxY,max(vec_Y));
    11141132            end
    11151133        elseif test_vec
    1116             XMin=min(vec_X);
    1117             XMax=max(vec_X);
    1118             YMin=min(vec_Y);
    1119             YMax=max(vec_Y);
    1120         end
    1121     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
     1134            MinX=min(vec_X);
     1135            MaxX=max(vec_X);
     1136            MinY=min(vec_Y);
     1137            MaxY=max(vec_Y);
     1138        end
     1139    end
     1140    PlotParamOut.Coordinates.MinX=MinX;
     1141    PlotParamOut.Coordinates.MaxX=MaxX;
     1142    PlotParamOut.Coordinates.MinY=MinY;
     1143    PlotParamOut.Coordinates.MaxY=MaxY;
     1144    if MaxX>MinX
     1145        set(haxes,'XLim',[MinX MaxX]);% set x limits of frame in axes coordinates
     1146    end
     1147    if MaxY>MinY
     1148        set(haxes,'YLim',[MinY MaxY]);% set x limits of frame in axes coordinates
    11311149    end
    11321150    set(haxes,'YDir','normal')
Note: See TracChangeset for help on using the changeset viewer.