www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@mvgraph3d/private/pr_graphlim.m

    function pr_graphlim(gr)
%PR_GRAPHLIM Private Function
%
%  Private function for sorting out correct limits on axes and colorbar.

%  Copyright 2000-2010 The MathWorks, Inc. and Ford Global Technologies, Inc.


% redo limits on axes and colourbar
ud = gr.DataPointer.info;
data = ud.data;
if ~isempty(data)
    minmax = ud.limits;
    % check minmax for correct size
    if length(minmax)<size(data,2)
        minmax(end+1:size(data,2)) = {0};
    elseif length(minmax)>size(data,2)
        minmax = minmax(1:size(data,2));
    end

    
    xval = get(gr.xfactor,'Value');
    if all(minmax{xval}==0)
        xl = mbcmakelimits(data(:, xval));
    else
        xl = minmax{xval};
        if ~all(isfinite(xl)) || xl(2)<=xl(1)
            xl = mbcmakelimits(data(:, xval));
        end        
    end

    yval=get(gr.yfactor,'Value');
    if all(minmax{yval}==0)
        yl = mbcmakelimits(data(:, yval));
    else
        yl = minmax{yval};
        if ~all(isfinite(yl)) || yl(2)<=yl(1)
            yl = mbcmakelimits(data(:, yval));
        end        
    end

    zval=get(gr.zfactor,'Value');
    if all(minmax{zval}==0)
        zl = mbcmakelimits(data(:, zval));
    else
        zl = minmax{zval};
        if ~all(isfinite(zl)) || zl(2)<=zl(1)
            zl = mbcmakelimits(data(:, zval));
        end        
    end

    set(gr.axes,{'XLim','YLim','ZLim'},{xl, yl, zl});

    % Do colorbar ticklabels
    cl = zl;
    ylim = get(gr.colorbar.axes,'YLim');
    set(gr.axes,'CLim',cl);
    labpoints = get(gr.colorbar.axes,'YTick');
    actpoints = cl(1)+(labpoints-0.5).*(cl(2)-cl(1))./(ylim(2)-ylim(1));
    actpoints = cellstr(num2str(actpoints','%3.2f'));
    set(gr.colorbar.axes,'YTickLabel',actpoints);
end