www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@xregcolorbar/private/pr_plot.m
function pr_plot(gr,internalset) %XREGCOLORBAR/PRIVATE/PR_PLOT Private function % This is a private xregcolorbar function used to return cmap % Copyright 2000-2010 The MathWorks, Inc. and Ford Global Technologies, Inc. if nargin<2 internalset = 0; end data = get(gr.colorbar.frame1,'UserData'); labels = get(gr.colorbar.frame2,'UserData'); c=get(gr.cfactor,'Value'); ud=get(gr.ctext,'UserData'); if isempty(data) ud.coldata = []; ud.cmax = []; ud.cmin = []; ud.inds = []; else cdata=data(:,c); % if range limiter is checked, need to reduce all data here clim=ud.clim; ud.cdata = cdata; if get(gr.colorbar.userange,'Value') && ud.limitenable cmax=get(gr.colorbar.maxrange,'UserData'); cmin=get(gr.colorbar.minrange,'UserData'); % convert to actual units ylim=get(gr.colorbar.axes,'YLim'); cmax=clim(1)+(clim(2)-clim(1))*(cmax-ylim(1))/(ylim(2)-ylim(1)); cmin=clim(1)+(clim(2)-clim(1))*(cmin-ylim(1))/(ylim(2)-ylim(1)); maxind = find(cdata>cmax)'; minind = find(cdata<cmin)'; ud.cmax = cmax; ud.cmin = cmin; ud.inds=setdiff(1:length(cdata),[maxind minind]); switch ud.limitstyle case {'exclude','normal'} case {'color','limit'} clim = [cmin cmax]; end cdata=cdata(ud.inds); else ud.cmax = clim(2); ud.cmin = clim(1); ud.inds = 1:length(cdata); end % set colours for colorbar cmap=get(gr.colorbar.bar,'FaceVertexCData'); n=size(cmap,1); mn=clim(1);mx=clim(2); % work out cdata - needs to be one for each vertex (zdata) edges=linspace(mn,mx,n+1); ud.edges = [-inf edges(2:end-1) inf]; if ~isempty(cdata) [nul,bin]=histc(cdata,ud.edges); bin(bin==0)=1; else bin=[]; end % reshape cmap ready. ud.coldata=cmap(bin(:),:); end set(gr.ctext,'UserData',ud); % set axis labels lbls=get(gr.colorbar.axes,'Title'); if ~isempty(labels) set(lbls,'String',labels(c), 'Interpreter', 'none'); else set(lbls,'String',''); end % fire callback here... ud = get(gr.patch,'UserData'); cb = ud.callback; vis = get(gr.colorbar.userange,'UserData'); if ~isempty(cb) && strcmp(vis,'on') && (~internalset || ud.setcallback) % don't fire callback if not visible % Don't fire cb if cbmode=external and this is internal call. xregcallback(cb); end