Changeset 128 for trunk/src/plot_field.m
- Timestamp:
- Nov 21, 2010, 10:06:11 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/plot_field.m
r109 r128 105 105 % use htext: handles of the text edit box (uicontrol) 106 106 % introduce PlotParam.Hold: 'on' or 'off' (for curves) 107 107 108 108 %default output 109 109 if ~exist('PlotParam','var'),PlotParam=[];end; … … 127 127 if ishandle(haxes) 128 128 if isequal(get(haxes,'Type'),'axes') 129 axes(haxes)129 % axes(haxes) 130 130 testnewfig=0; 131 131 AxeData=get(haxes,'UserData'); … … 139 139 end 140 140 end 141 141 142 if testnewfig% create a new figure and axes if the plotting axes does not exist 142 143 hfig=figure; … … 157 158 haxes=axes; 158 159 set(haxes,'position',[0.13,0.2,0.775,0.73]) 159 else160 hstack=findobj(allchild(0),'Type','figure');%current stack order of figures in matlab161 160 end 162 161 if isfield(PlotParam,'text_display_1') && ishandle(PlotParam.text_display_1) … … 182 181 [Data.NbDim]=max(NbDim); 183 182 end 183 errormsg=[]; 184 184 if isequal(Data.NbDim,0) 185 185 AxeData=plot_text(Data,htext); 186 186 PlotType='text'; 187 errormsg=[]; 187 188 elseif isequal(Data.NbDim,1) 188 [AxeData ,haxes]=plot_profile(Data,CellVarIndex,VarType,haxes,PlotParam);%189 [AxeData]=plot_profile(Data,CellVarIndex,VarType,haxes,PlotParam);% 189 190 if testzoomaxes 190 191 [AxeData,zoomaxes,PlotParamOut]=plot_profile(Data,CellVarIndex,VarType,zoomaxes,PlotParam); … … 192 193 end 193 194 PlotType='line'; 195 errormsg=[]; 194 196 elseif isequal(Data.NbDim,2) 195 197 ind_select=find(NbDim>=2); 196 198 if numel(ind_select)>2 197 msgbox_uvmat('ERROR','more than two fields to map') 198 display('more than two fields to map') 199 return 200 end 201 [AxeData,haxes,PlotParamOut,PlotType]=plot_plane(Data,CellVarIndex(ind_select),VarType(ind_select),haxes,PlotParam,htext,PosColorbar); 202 if testzoomaxes 203 [AxeData,zoomaxes,PlotParamOut]=plot_plane(Data,CellVarIndex(ind_select),VarType(ind_select),zoomaxes,PlotParam,1,PosColorbar); 204 %AxeData.ZoomAxes=zoomaxes; 205 Data.ZoomAxes=zoomaxes; 199 errormsg='more than two fields to map'; 200 else 201 [AxeData,xx,PlotParamOut,PlotType,errormsg]=plot_plane(Data,CellVarIndex(ind_select),VarType(ind_select),haxes,PlotParam,htext,PosColorbar); 202 if testzoomaxes && isempty(errormsg) 203 [AxeData,zoomaxes,PlotParamOut,xx,errormsg]=plot_plane(Data,CellVarIndex(ind_select),VarType(ind_select),zoomaxes,PlotParam,1,PosColorbar); 204 %AxeData.ZoomAxes=zoomaxes; 205 Data.ZoomAxes=zoomaxes; 206 end 206 207 end 207 208 elseif isequal(Data.NbDim,3) 209 errormsg='volume plot not implemented yet'; 210 end 211 if ~isempty(errormsg) 208 212 msgbox_uvmat('ERROR','volume plot not implemented yet') 209 213 return 210 % else211 % testnbdim=0;212 214 end 213 215 … … 234 236 %set(haxes,'UserData',AxeData) 235 237 set(haxes,'UserData',Data) 236 if ~testnewfig237 set(0,'Children',hstack);%put back the initial figure stack after plot creation238 % set(haxes,'Tag','uvmat');239 end238 % if ~testnewfig 239 % %set(0,'Children',hstack);%put back the initial figure stack after plot creation 240 % 241 % end 240 242 241 243 … … 303 305 function [AxeData,haxes]=plot_profile(data,CellVarIndex,VarType,haxes,PlotParam) 304 306 %------------------------------------------------------------------- 305 %axes(haxes) 307 %TODO: modify existing plot if it exists 308 306 309 hfig=get(haxes,'parent'); 307 310 AxeData=data; … … 322 325 legend_str={}; 323 326 324 %initiates string of the plot command 327 %% prepare the string for plot command 328 %initiate the plot command 325 329 plotstr='hhh=plot('; 326 330 textmean={}; 327 % abscissa_name='';328 331 coord_x_index=[]; 329 332 test_newplot=1; … … 331 334 % num_curve=numel(hh); 332 335 % icurve=0; 336 337 %loop on input fields 333 338 for icell=1:length(CellVarIndex) 334 testfalse=0;335 339 VarIndex=CellVarIndex{icell};% indices of the selected variables in the list data.ListVarName 336 DimCell=data.VarDimName{VarIndex(1)};337 if ischar(DimCell)338 DimCell={DimCell};339 end340 XName=DimCell{1}; %first dimension considered as abscissa341 340 if ~isempty(VarType{icell}.coord_x) 342 341 coord_x_index=VarType{icell}.coord_x; … … 353 352 end 354 353 testplot=ones(size(data.ListVarName));%default test for plotted variables 355 testcoordvar=0;356 charplot_0='''-''';%default357 if isfield(data,'ObjectProjMode')&& isequal(data.ObjectProjMode,'projection')358 charplot_0='+';359 end360 xtitle='';361 362 354 xtitle=data.ListVarName{coord_x_index}; 363 355 eval(['coord_x{icell}=data.' data.ListVarName{coord_x_index} ';']);%coordinate variable set as coord_x 364 356 if isfield(data,'VarAttribute')&& numel(data.VarAttribute)>=coord_x_index && isfield(data.VarAttribute{coord_x_index},'units') 365 357 xtitle=[xtitle '(' data.VarAttribute{coord_x_index}.units ')']; 366 358 end 367 359 eval(['coord_x{icell}=data.' data.ListVarName{coord_x_index} ';']);%coordinate variable set as coord_x 368 % testcoordvar=1;369 360 testplot(coord_x_index)=0; 370 361 if ~isempty(VarType{icell}.ancillary') 371 362 testplot(VarType{icell}.ancillary)=0; 372 363 end 373 364 if ~isempty(VarType{icell}.warnflag') 374 testplot(VarType{icell}.warnflag)=0; 375 end 376 365 testplot(VarType{icell}.warnflag)=0; 366 end 377 367 if isfield(data,'VarAttribute') 378 368 VarAttribute=data.VarAttribute; 379 for ivar=1:length(VarIndex)380 if length(VarAttribute)>=VarIndex(ivar) && isfield(VarAttribute{VarIndex(ivar)},'long_name')381 plotname{VarIndex(ivar)}=VarAttribute{VarIndex(ivar)}.long_name;382 else383 plotname{VarIndex(ivar)}=data.ListVarName{VarIndex(ivar)};%name for display in plot A METTRE384 end385 end386 end387 % test_newplot=0;%default388 % if num_curve>=icurve+numel(find(testplot(VarIndex)))%update existing curves389 % if ~isempty(VarType{icell}.discrete')390 % charplot_0='+';391 % LineStyle='none';392 % else393 % charplot_0='none';394 % LineStyle='-';395 % end396 % for ivar=1:length(VarIndex)397 % if testplot(VarIndex(ivar))398 % icurve=icurve+1;399 % VarName=data.ListVarName{VarIndex(ivar)};400 % eval(['data.' VarName '=squeeze(data.' VarName ');'])401 % set(hh(icurve),'LineStyle',LineStyle)402 % set(hh(icurve),'Marker',charplot_0)403 % set(hh(icurve),'XData',coord_x{icell})404 % eval(['yy=data.' VarName ';'])405 % set(hh(icurve),'YData',yy);406 % end407 % end408 % else% new plot409 if ~isempty(VarType{icell}.discrete')410 charplot_0='''+''';411 else412 charplot_0='''-''';413 end414 369 for ivar=1:length(VarIndex) 415 if testplot(VarIndex(ivar)) 416 VarName=data.ListVarName{VarIndex(ivar)}; 417 eval(['data.' VarName '=squeeze(data.' VarName ');']) 418 % if isequal(VarName,'A') 419 % charplot='''-'''; 420 % else 421 % charplot=charplot_0; 422 % end 423 plotstr=[plotstr 'coord_x{' num2str(icell) '},data.' VarName ',' charplot_0 ',']; 424 eval(['nbcomponent2=size(data.' VarName ',2);']); 425 eval(['nbcomponent1=size(data.' VarName ',1);']); 426 if numel(coord_x{icell})==2 427 coord_x{icell}=linspace(coord_x{icell}(1),coord_x{icell}(2),nbcomponent1); 428 end 429 eval(['varmean=mean(double(data.' VarName '));']);%mean value 430 textmean=[textmean; {[VarName 'mean= ' num2str(varmean,4)]}]; 431 if nbcomponent1==1|| nbcomponent2==1 432 legend_str=[legend_str {VarName}]; %variable with one component 433 else %variable with severals components 434 for ic=1:min(nbcomponent1,nbcomponent2) 435 legend_str=[legend_str [VarName '_' num2str(ic)]]; %variable with severals components 436 end % labeled by their index (e.g. color component) 437 end 438 end 439 end 440 % end 441 end 370 if length(VarAttribute)>=VarIndex(ivar) && isfield(VarAttribute{VarIndex(ivar)},'long_name') 371 plotname{VarIndex(ivar)}=VarAttribute{VarIndex(ivar)}.long_name; 372 else 373 plotname{VarIndex(ivar)}=data.ListVarName{VarIndex(ivar)};%name for display in plot A METTRE 374 end 375 end 376 end 377 % test_newplot=0;%default 378 % if num_curve>=icurve+numel(find(testplot(VarIndex)))%update existing curves 379 % if ~isempty(VarType{icell}.discrete') 380 % charplot_0='+'; 381 % LineStyle='none'; 382 % else 383 % charplot_0='none'; 384 % LineStyle='-'; 385 % end 386 % for ivar=1:length(VarIndex) 387 % if testplot(VarIndex(ivar)) 388 % icurve=icurve+1; 389 % VarName=data.ListVarName{VarIndex(ivar)}; 390 % eval(['data.' VarName '=squeeze(data.' VarName ');']) 391 % set(hh(icurve),'LineStyle',LineStyle) 392 % set(hh(icurve),'Marker',charplot_0) 393 % set(hh(icurve),'XData',coord_x{icell}) 394 % eval(['yy=data.' VarName ';']) 395 % set(hh(icurve),'YData',yy); 396 % end 397 % end 398 % else% new plot 399 if ~isempty(VarType{icell}.discrete') 400 charplot_0='''+'''; 401 else 402 charplot_0='''-'''; 403 end 404 for ivar=1:length(VarIndex) 405 if testplot(VarIndex(ivar)) 406 VarName=data.ListVarName{VarIndex(ivar)}; 407 eval(['data.' VarName '=squeeze(data.' VarName ');']) 408 plotstr=[plotstr 'coord_x{' num2str(icell) '},data.' VarName ',' charplot_0 ',']; 409 eval(['nbcomponent2=size(data.' VarName ',2);']); 410 eval(['nbcomponent1=size(data.' VarName ',1);']); 411 if numel(coord_x{icell})==2 412 coord_x{icell}=linspace(coord_x{icell}(1),coord_x{icell}(2),nbcomponent1); 413 end 414 eval(['varmean=mean(double(data.' VarName '));']);%mean value 415 textmean=[textmean; {[VarName 'mean= ' num2str(varmean,4)]}]; 416 if nbcomponent1==1|| nbcomponent2==1 417 legend_str=[legend_str {VarName}]; %variable with one component 418 else %variable with severals components 419 for ic=1:min(nbcomponent1,nbcomponent2) 420 legend_str=[legend_str [VarName '_' num2str(ic)]]; %variable with severals components 421 end % labeled by their index (e.g. color component) 422 end 423 end 424 end 425 end 426 427 %% activate the plot 442 428 if test_newplot && ~isequal(plotstr,'hhh=plot(') 443 429 plotstr=[plotstr '''tag'',''plot_line'');']; 444 430 %execute plot (instruction plotstr) 431 axes(haxes)% select the plotting axes for plot operation 445 432 eval(plotstr) 446 433 … … 502 489 503 490 %------------------------------------------------------------------- 504 function [AxeData,haxes,PlotParamOut,PlotType ]=plot_plane(Data,CellVarIndex,VarTypeCell,haxes,PlotParam,htext,PosColorbar)491 function [AxeData,haxes,PlotParamOut,PlotType,errormsg]=plot_plane(Data,CellVarIndex,VarTypeCell,haxes,PlotParam,htext,PosColorbar) 505 492 %------------------------------------------------------------------- 493 506 494 grid(haxes, 'off') 507 495 %default plotting parameters … … 517 505 end 518 506 PlotParamOut=PlotParam;%default 519 520 %plotting axes521 507 hfig=get(haxes,'parent'); 522 508 hcol=findobj(hfig,'Tag','Colorbar'); %look for colorbar axes … … 530 516 AxeData.ObjectCoord=Data.ObjectCoord; 531 517 end 532 518 errormsg=[];%default 533 519 test_ima=0; %default: test for image or map plot 534 520 test_vec=0; %default: test for vector plots … … 548 534 ivar_C=[VarType.scalar VarType.image VarType.color VarType.ancillary]; %defines index (indices) for the scalar or ancillary fields 549 535 if numel(ivar_C)>1 550 msgbox_uvmat('ERROR','error in plot_field: too many scalar inputs')536 errormsg= 'error in plot_field: too many scalar inputs'; 551 537 return 552 538 end … … 558 544 end 559 545 % idim_Y=[]; 560 test_grid=0;546 % test_grid=0; 561 547 if ~isempty(ivar_U) && ~isempty(ivar_V)% vector components detected 562 548 if test_vec 563 msgbox_uvmat('ERROR','error in plot_field: attempt to plot two vector fields')549 errormsg='error in plot_field: attempt to plot two vector fields'; 564 550 return 565 551 else … … 570 556 eval(['vec_X=Data.' Data.ListVarName{ivar_X} ';']) 571 557 eval(['vec_Y=Data.' Data.ListVarName{ivar_Y} ';']) 572 elseif numel(VarType.coord)==2 & VarType.coord~=[0 0];%coordinates defines by dimension variables558 elseif numel(VarType.coord)==2 && ~isequal(VarType.coord,[0 0]);%coordinates defines by dimension variables 573 559 eval(['y=Data.' Data.ListVarName{VarType.coord(1)} ';']) 574 560 eval(['x=Data.' Data.ListVarName{VarType.coord(2)} ';']) … … 581 567 [vec_X,vec_Y]=meshgrid(x,y); 582 568 else 583 msgbox_uvmat('ERROR','error in plot_field: invalid coordinate definition for vector field')569 errormsg='error in plot_field: invalid coordinate definition for vector field'; 584 570 return 585 571 end … … 605 591 elseif ~isempty(ivar_C) %scalar or image 606 592 if test_ima 607 msgbox_uvmat('ERROR','attempt to plot two scalar fields or images')593 errormsg='attempt to plot two scalar fields or images'; 608 594 return 609 595 end … … 635 621 x_units=['(' Data.VarAttribute{VarType.coord(2)}.units ')']; 636 622 end 637 if numel(Data.VarAttribute)>=VarType.coord(1) & isfield(Data.VarAttribute{VarType.coord(1)},'units')623 if numel(Data.VarAttribute)>=VarType.coord(1) && isfield(Data.VarAttribute{VarType.coord(1)},'units') 638 624 y_units=['(' Data.VarAttribute{VarType.coord(1)}.units ')']; 639 625 end … … 644 630 DAY_max=max(DAY); 645 631 if sign(DAY_min)~=sign(DAY_max);% =1 for increasing values, 0 otherwise 646 errormsg=['errror in plot_field.m: non monotonic dimension variable # 'ListVarName{VarType.coord(1)} ];632 errormsg=['errror in plot_field.m: non monotonic dimension variable ' Data.ListVarName{VarType.coord(1)} ]; 647 633 return 648 634 end … … 654 640 DAX_max=max(DAX); 655 641 if sign(DAX_min)~=sign(DAX_max);% =1 for increasing values, 0 otherwise 656 errormsg=['errror in plot_field.m: non monotonic dimension variable # 'ListVarName{VarType.coord(2)} ];642 errormsg=['errror in plot_field.m: non monotonic dimension variable ' Data.ListVarName{VarType.coord(2)} ]; 657 643 return 658 644 end … … 682 668 AY=[AY(1) AY(end)]; 683 669 else 684 msgbox_uvmat('ERROR','error in plot_field: invalid coordinate definition ')670 errormsg='error in plot_field: invalid coordinate definition '; 685 671 return 686 672 end 687 x_label=[Data.ListVarName{ivar_X} '(' x_units ')'];673 %x_label=[Data.ListVarName{ivar_X} '(' x_units ')']; 688 674 end 689 675 end 690 676 691 %% %%%%%%%%%%%%%%%%%%%image or scalar plot %%%%%%%%%%%%%%%%%%%%%%%%%%677 %% image or scalar plot %%%%%%%%%%%%%%%%%%%%%%%%%% 692 678 693 679 if ~isfield(PlotParam.Scalar,'Contours') … … 700 686 siz=numel(np); 701 687 if siz>3 702 msgbox_uvmat('ERROR',['unrecognized scalar type: ' num2str(siz) ' dimensions'])688 errormsg=['unrecognized scalar type: ' num2str(siz) ' dimensions']; 703 689 return 704 690 end … … 709 695 siz=3;%color image 710 696 else 711 msgbox_uvmat('ERROR',['unrecognized scalar type: ' num2str(np(3)) ' color components'])697 errormsg=['unrecognized scalar type: ' num2str(np(3)) ' color components']; 712 698 return 713 699 end 714 700 end 701 715 702 %set the color map 716 703 if isfield(PlotParam.Scalar,'BW') … … 719 706 BW=(siz==2) && (isa(A,'uint8')|| isa(A,'uint16'));% non color images represented in gray scale by default 720 707 end 721 if siz==2 %for black and white images 708 709 %case of grey level images or contour plot 710 if siz==2 722 711 if ~isfield(PlotParam.Scalar,'AutoScal') 723 712 PlotParam.Scalar.AutoScal=0;%default … … 729 718 PlotParam.Scalar.MaxA=[];%default 730 719 end 731 if isequal(PlotParam.Scalar.AutoScal,0)| isempty(PlotParam.Scalar.MinA)|~isa(PlotParam.Scalar.MinA,'double') %correct if there is no numerical data in edit box720 if isequal(PlotParam.Scalar.AutoScal,0)||isempty(PlotParam.Scalar.MinA)||~isa(PlotParam.Scalar.MinA,'double') %correct if there is no numerical data in edit box 732 721 MinA=double(min(min(A))); 733 722 else … … 741 730 PlotParamOut.Scalar.MinA=MinA; 742 731 PlotParamOut.Scalar.MaxA=MaxA; 743 axes(haxes) 732 733 % case of contour plot 744 734 if isequal(PlotParam.Scalar.Contours,1) 745 if ~isempty(hima) & ishandle(hima)735 if ~isempty(hima) && ishandle(hima) 746 736 delete(hima) 747 737 end … … 770 760 txt=ver;%version of Matlab 771 761 Release=txt(1).Release; 772 relnumb=str2 num(Release(3:4));762 relnumb=str2double(Release(3:4)); 773 763 if relnumb >= 14 774 764 vec=linspace(0,1,(abscontmax-abscontmin)/intercont);%define a greyscale colormap with steps intercont … … 788 778 colormap(map); 789 779 end 780 781 % set colormap for image display 790 782 if ~isequal(PlotParam.Scalar.Contours,1) 791 783 % rescale the grey levels with min and max, put a grey scale colorbar … … 799 791 end 800 792 end 801 else %color images 802 axes(haxes) 793 794 % case of color images 795 else 803 796 if BW 804 797 B=uint16(sum(A,3)); … … 809 802 MaxA=255; 810 803 end 811 if ~isequal(PlotParam.Scalar.Contours,1) 812 %interpolate to increase resolution 804 805 % display usual image 806 if ~isequal(PlotParam.Scalar.Contours,1) 807 % interpolate field to increase resolution of image display 813 808 test_interp=1; 814 809 if max(np) <= 64 … … 829 824 yi=linspace(AY(1),AY(2),npxy(1)); 830 825 B = interp2(X,Y,double(B),xi,yi'); 831 end 826 end 827 % create new image if there no image handle is found 832 828 if isempty(hima) 829 % axes(haxes)% set haxes the current axes for image creation 830 set(hfig,'CurrentAxes',haxes) % set haxes the current axes for image creation 833 831 tag=get(haxes,'Tag'); 834 832 if MinA<MaxA 835 833 hima=imagesc(AX,AY,B,[MinA MaxA]); 836 else 834 else % to deal with uniform field 837 835 hima=imagesc(AX,AY,B,[MaxA-1 MaxA]); 838 836 end 839 837 set(hima,'Tag','ima','HitTest','off') 840 set(haxes,'Tag',tag);%preserve the axes tag (removed by image fct !!!) 838 set(haxes,'Tag',tag);%preserve the axes tag (removed by image fct !!!) 839 % update an existing image 841 840 else 842 841 set(hima,'CData',B); … … 857 856 AxeData.AY=[AY(1) AY(end)]; 858 857 test_ima=1; 858 859 859 %display the colorbar code for B/W images if Poscolorbar not empty 860 860 if siz==2 && exist('PosColorbar','var')&& ~isempty(PosColorbar) … … 865 865 set(hcol,'Position',PosColorbar) 866 866 end 867 YTick=0;%default867 %YTick=0;%default 868 868 if MaxA>MinA 869 869 if isequal(PlotParam.Scalar.Contours,1) … … 873 873 YTick_scaled=colbarlim(1)+scale_bar*(YTick-abscontmin); 874 874 set(hcol,'YTick',YTick_scaled); 875 elseif (isfield(PlotParam.Scalar,'BW') & isequal(PlotParam.Scalar.BW,1))|isa(A,'uint8')| isa(A,'uint16')%images875 elseif (isfield(PlotParam.Scalar,'BW') && isequal(PlotParam.Scalar.BW,1))||isa(A,'uint8')|| isa(A,'uint16')%images 876 876 hi=get(hcol,'children'); 877 877 if iscell(hi)%multiple images in colorbar … … 879 879 end 880 880 set(hi,'YData',[MinA MaxA]) 881 set(hi,'CData', [1:256]')881 set(hi,'CData',(1:256)') 882 882 set(hcol,'YLim',[MinA MaxA]) 883 883 YTick=colbartick(MinA,MaxA); … … 889 889 end 890 890 set(hi,'YData',[MinA MaxA]) 891 set(hi,'CData', [1:64]')891 set(hi,'CData',(1:64)') 892 892 YTick=colbartick(MinA,MaxA); 893 893 set(hcol,'YLim',[MinA MaxA]) … … 912 912 end 913 913 914 %% %%%%%%%%%%%%%%%%%%%vector plot %%%%%%%%%%%%%%%%%%%%%%%%%%914 %% vector plot %%%%%%%%%%%%%%%%%%%%%%%%%% 915 915 if test_vec 916 916 %vector scale representation … … 927 927 if ~isfield(PlotParam.Vectors,'AutoVec') || isequal(PlotParam.Vectors.AutoVec,0)|| ~isfield(PlotParam.Vectors,'VecScale')... 928 928 ||isempty(PlotParam.Vectors.VecScale)||~isa(PlotParam.Vectors.VecScale,'double') %automatic vector scale 929 scale=[];929 % scale=[]; 930 930 if test_false %remove false vectors 931 931 indsel=find(AxeData.FF==0);%indsel =indices of good vectors … … 1045 1045 listdim={'AY','AX',{'AY','AX'},'nb_vectors','nb_vectors','nb_vectors','nb_vectors','nb_vectors','nb_vectors','nb_vectors','nb_vectors'}; 1046 1046 Role={'coord_y','coord_x','scalar','coord_x','coord_y','vector_x','vector_y','scalar','vector_z','warnflag','errorflag'}; 1047 ind_select=[];1047 %ind_select=[]; 1048 1048 nbvar=0; 1049 1049 AxeData.ListVarName={}; … … 1168 1168 isn=isnan(colorlist(icolor,:));%test if color NaN 1169 1169 if 2*icolor > sizh(1) %if icolor exceeds the number of existing ones 1170 axes(haxes) 1170 %axes(haxes) 1171 hfig=get(haxes,'parent'); 1172 % axes(haxes) 1173 set(0,'CurrentFigure',hfig) 1174 set(hfig,'CurrentAxes',haxes) 1171 1175 if ~isn(1) %if the vectors are visible color not nan 1172 1176 if n(2)>0
Note: See TracChangeset
for help on using the changeset viewer.