www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@xregmultigraph2d/set.m
function gr=set(gr,varargin) % GRAPH2D/SET Set interface for graph2d object % Provides a set interface to the graph2d object. This object has two modes % of operation: if a factors list is specified then it plots ones column % against another. If row and column headings are specified then it plots a 2D % image of the entire data matrix. % % Valid properties are: % 'Position' - 4 element position vector in pixels % 'Visible' - 'on' or 'off' % 'Data' - matrix of data with a column for each factor % 'YData' - matrix of data with a column for each y-factor % 'CData' - matrix of data, same size as YData, value for each point % 'Factors' - cell array of strings corresponding to each factor % 'CFactor' - string corresponding to color data % 'YFactors' - cell array of strings; used for title % 'FactorSelection' - 'Exclusive', 'normal' factor selection type % 'FillMask' - matrix of 0 | 1, size(no. y factors, no. x factors) indicating % whether to plot markers filled or empty for multiplots. % 'Parent' - change parent figure (useful for saving a copy of graph) % 'Type' - one of 'single', 'multi', 'MultiNoError' or 'table' % 'Transparentcolor' - color to set ui item backgrounds to when the overall % background is set to 'none' by prefsgui % 'Backgroundcolor' - color for background patch % 'Callback' - Callback string, function handle or cell array to execute % when a different factor is chosen. % 'SinglePlotCallback' - Callback to execute when single line is plotted % (eg to turn legend off/on) % 'MultiPlotCallback' - Callback to execute when multiple lines are plotted % 'Userdata' - Userdata field for general use by user. % 'Grid' - Turn grid on or off. % 'Markersize'- Set lines to use the given markersize % 'Marker' - Set lines to use the given markers (cell array, or string % of single character markers) % 'Markercolor'- Set lines to use the given marker colors when colorbar is off % Must be nx3 matrix (empty for default). % 'Frame' - On/off: turn the bounding box on and off % 'Table' - Set ptr to table % 'TableIndex'- Index of valid points % 'ColorBar' - On/Off: turn colorbar on and off % 'ColorLimitStyle' - 'normal','limit','inactive' % Fix colorbar map between min and max % (normal) or map between limits (limit), or disable. % 'ColorExcludeStyle' - 'color','blank','exclude' Determines how to color % points outside colorbar limits. % 'YunitString'- Display units, shown for error and multiple selection. % 'Title' - Set title of graph % % Plus a load of other properties that are visible by getting the handles % Copyright 2000-2011 The MathWorks, Inc. and Ford Global Technologies, Inc. % Bail if we've not been given a graph2d object if ~isa(gr,'xregmultigraph2d') error(message('mbc:xregmultigraph2d:InvalidObject')) end redraws=[0 0 0 0]; % flags to signal a factorsort, graphlim, plot and cbarfaces % loop over varargin for n=1:2:(nargin-2) drawreqs=[0 0 0 0]; switch lower(varargin{n}) case 'position' newpos = varargin{n+1}; set(gr.panel, 'Position', newpos); ud = get(gr.axes, 'UserData'); oldpos = ud.pos; ud.pos = newpos; set(gr.axes, 'UserData', ud); % Update position of items within the panel if required if any(oldpos(3:4)~=newpos(3:4)) [gr,drawreqs]=i_position(gr,newpos); end case 'visible' set(gr.panel, 'Visible', varargin{n+1}); case {'data','value','number','xdata'} [gr,drawreqs]=i_xdata(gr,varargin{n+1}); case {'ydata','output'} [gr,drawreqs]=i_ydata(gr,varargin{n+1}); case {'colordata','cdata'} [gr,drawreqs]=i_cdata(gr,varargin{n+1}); case {'factors','infactors','xfactors'} [gr,drawreqs]=i_factors(gr,varargin{n+1},'x'); case {'colorstring','colorfactor','cfactor'} [gr,drawreqs]=i_factors(gr,varargin{n+1},'c'); case 'yfactors' [gr,drawreqs]=i_factors(gr,varargin{n+1},'y'); case 'parent' set(gr.panel,'Parent',varargin{n+1}); case 'type' [gr,drawreqs]=i_type(gr,varargin{n+1}); case 'colormap' [gr,drawreqs]=i_cmap(gr,varargin{n+1}); case 'grid' [gr,drawreqs]=i_grid(gr,varargin{n+1}); case 'factorselection' [gr,drawreqs]=i_seltype(gr,varargin{n+1}); case 'currentxfactor' [gr,drawreqs]=i_select(gr,varargin{n+1},'x'); case 'currentyfactor' [gr,drawreqs]=i_select(gr,varargin{n+1},'y'); case {'currentcfactor','currentcolorfactor'} [gr,drawreqs]=i_select(gr,varargin{n+1},'c'); case {'limits','xlimits'} [gr,drawreqs]=i_limits(gr,varargin{n+1},'x'); case {'ylimits'} [gr,drawreqs]=i_limits(gr,varargin{n+1},'y'); case 'transparentcolor' [gr,drawreqs]=i_transclr(gr,varargin{n+1}); case 'backgroundcolor' [gr,drawreqs]=i_backclr(gr,varargin{n+1}); case 'callback' [gr,drawreqs]=i_callback(gr,varargin{n+1},'factor'); case {'singleplotcallback','singlecallback'} [gr,drawreqs]=i_callback(gr,varargin{n+1},'single'); case {'multiplotcallback','multicallback'} [gr,drawreqs]=i_callback(gr,varargin{n+1},'multi'); case 'frame' [gr,drawreqs]=i_frame(gr,varargin{n+1}); case 'colorbar' [gr,drawreqs]=i_colorbar(gr,varargin{n+1}); case 'userdata' ud=get(gr.axes,'UserData'); ud.userdata=varargin{n+1}; set(gr.axes,'UserData',ud); case 'markersize' [gr,drawreqs]=i_markersize(gr,varargin{n+1}); case 'markercolor' [gr,drawreqs]=i_markercolor(gr,varargin{n+1}); case {'table','tableptr'} [gr,drawreqs]=i_table(gr,varargin{n+1}); case 'uicontextmenu' [gr,drawreqs]=i_menu(gr,varargin{n+1}); case 'fillmask' [gr,drawreqs]=i_fillmask(gr,varargin{n+1}); case {'marker','markers'} [gr,drawreqs]=i_marker(gr,varargin{n+1}); case 'colorlimitstyle' drawreqs = [1 0 1 1]; set(gr.colorbar,varargin{n:n+1}); case 'colorexcludestyle' [gr,drawreqs]=i_excludestyle(gr,varargin{n+1}); case {'yunitstring','yunit'} [gr,drawreqs]=i_yunitstring(gr,varargin{n+1}); case 'title' [gr,drawreqs]=i_settitle(gr,varargin{n+1}); case 'tableindex' [gr,drawreqs]=i_tableindex(gr,varargin{n+1}); case 'forcedraw' % Used during creation to ensure that graph is drawn at least once. drawreqs = varargin{n+1}; end redraws = (redraws | drawreqs); end if redraws(1) pr_factorsort(gr); end if redraws(4) pr_initlines(gr) end if redraws(2) pr_graphlim(gr); end if redraws(3) pr_plot(gr); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_position - alter position of object in figure window %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_position(gr,newpos) % Adjust rectangle to account for the border width newpos(3:4) = newpos(3:4)-2; drawreqs=[0 0 0 0]; ud = get(gr.axes,'UserData'); % if position is too small, display an image indicating this! mnsz=minsize(gr); if newpos(3)<mnsz(1) || newpos(4)<mnsz(2) % go to blackout mode impos=[max(floor(newpos(3:4).*0.5)-15, [1 1]), min([32 32],newpos(3:4))]; impos = mbcgui.util.clipRect(impos); set(gr.badim,'Position', impos,'Visible','on'); set([gr.axes; gr.xfactor;gr.yfactor;gr.xtext;gr.ytext],'Visible','off'); set(get(gr.axes, 'Children'),'Visible','off'); set(gr.colorbar, 'Visible', 'off'); else % work out positions % colorbar if ud.colorbar && newpos(3)>250 newpos(3) = newpos(3) - 100; set(gr.colorbar,'Position',[newpos(3) 1 100 newpos(4)-1], ... 'Visible','on'); else set(gr.colorbar, 'Visible', 'off'); end % axes if newpos(4)<250 delta=max(60,(80-0.5*(250-newpos(4)))); else delta=80; end pos(2)=delta; pos(4)=newpos(4)-delta-25; pos(1)=50; pos(3)=newpos(3)-80; set(gr.axes,'Position',pos); % ui's pos(1)=1; pos(2)=1; pos(3)=newpos(3); if newpos(4)<250 % gradually reduce from 50 to 30 pixels pos(4)=max(30,50-0.5*(250-newpos(4))); else % max out at 50 from 250 upwards pos(4)=50; end set(gr.controls,'Position',pos); drawreqs(2)=1; hndls=[gr.axes;gr.xtext;gr.xfactor;gr.ytext;gr.yfactor]; set(hndls,'Visible','on'); set(get(gr.axes, 'Children'),'Visible','on'); set(gr.badim,'Visible','off'); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_data - insert data into object %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_xdata(gr,data) % interesting one. Need to plot nth column of data if there are labels % defined and they don't go outside the defined data set(gr.xtext,'UserData',data); drawreqs=[1 1 1 1]; function [gr,drawreqs]=i_ydata(gr,data) % interesting one. Need to plot nth column of data if there are labels % defined and they don't go outside the defined data set(gr.ytext,'UserData',data); drawreqs=[1 1 1 1]; function [gr,drawreqs]=i_cdata(gr,data) % interesting one. Need to plot nth column of data if there are labels % defined and they don't go outside the defined data set(gr.yfactor,'UserData',data); drawreqs=[1 1 1 1]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_factors - insert factors into object %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_factors(gr,factors,ax) if ischar(factors) factors = {factors}; elseif size(factors,1)==1 && size(factors,2)>2 factors=factors(:); end drawreqs=[1 0 1 0]; ud = get(gr.axes,'UserData'); switch ax case 'x' ud.xfactors = factors; % Check some table stuff i_tablestuff(gr,ud); case 'c' ud.colorfactor = factors; case 'y' ud.yfactors = factors; end set(gr.axes,'UserData',ud); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_type - change type of 2d graph %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_type(gr,tp) tp=lower(tp); drawreqs=[0 0 0 0]; if ~any(strcmp(tp,{'single','multi','table','multinoerror'})) return end ud = get(gr.axes,'UserData'); if ~strcmp(tp,ud.type) ud.type = tp; drawreqs([1 2 3 4])=1; set(gr.axes,'UserData',ud); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_cmap - insert new colormap for image view %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_cmap(gr,cmap) % update colorbar set(gr.colorbar,'Colormap',cmap); % Will need to replot data to ensure new colormap is carried into data drawreqs=[0 0 1 0]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_grid - turn grid on/off %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_grid(gr,grd) if strcmp(grd,'on') val=1; else val=0; end ud = get(gr.axes,'UserData'); ud.grid = val; set(gr.axes,'UserData',ud,'XGrid',grd,'YGrid',grd); drawreqs=[0 0 0 0]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_select - change factor selection %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_select(gr,sel,ax) switch ax case 'x' set(gr.xfactor,'Value',sel); case 'y' set(gr.yfactor,'Value',sel); case 'c' set(gr.colorbar,'currentfactor',sel); end drawreqs=[0 0 1 0]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_limits - set explicit limits on the factors %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_limits(gr,lim,ax) ud = get(gr.axes,'UserData'); switch ax case 'x' if iscell(lim) ud.limits = lim; end case 'y' ud.ylimits = lim; end set(gr.axes,'UserData',ud); drawreqs=[0 1 0 0]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_seltype - change behaviour of lists %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_seltype(gr,selset) drawreqs=[0 0 0 0]; switch lower(selset) case 'exclusive' val = 1; % Don't worry about trying to enforce exclusive setting now. case 'normal' val = 0; end ud = get(gr.axes,'UserData'); ud.exclusive = val; set(gr.axes,'UserData',ud); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_transclr - change transparency colour %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_transclr(gr,col) ud = get(gr.axes,'UserData'); ud.transcolor = col; set(gr.axes,'UserData',ud); % update if panel color is set to none. cnow=get(gr.panel,'BackgroundColor'); if ischar(cnow) if strcmp(cnow,'none') set([gr.xtext;gr.ytext],'BackgroundColor',col); end end drawreqs=[0 0 0 0]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_backclr - change background colour %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_backclr(gr,col) ud = get(gr.axes,'UserData'); if ischar(col) && strcmp(col,'none') bgcol = ud.transcolor; else bgcol=col; end set(gr.panel,'BackgroundColor',col); set([gr.xtext;gr.ytext],'BackgroundColor',bgcol); set(gr.colorbar,'BackgroundColor',bgcol); if ~ud.showframe set(gr.panel, 'HighlightColor', bgcol); end drawreqs=[0 0 0 0]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_frame - turn bounding frame on/off %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_frame(gr,state) ud = get(gr.axes,'UserData'); if strcmp(state,'on') set(gr.panel,'HighlightColor','k'); ud.showframe = true; else set(gr.panel,'HighlightColor',get(gr.panel, 'BackgroundColor')); ud.showframe = false; end set(gr.axes,'UserData',ud); drawreqs=[0 0 0 0]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_colorbar - turn colorbar on/off %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_colorbar(gr,state) ud = get(gr.axes,'UserData'); if isnumeric(state) val = state; elseif strcmp(state,'on') val = 1; else val = 0; end ud.colorbar = val; set(gr.axes,'UserData',ud); % update colorbar position and visiblity [gr,drawreqs] = i_position(gr,ud.pos); % Got to sort factors to get names for colorbar drawreqs = drawreqs | [1 0 1 0]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_markersize - change size of line markers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_markersize(gr,size) ud = get(gr.axes,'UserData'); ud.markersize = size; set(gr.axes,'UserData',ud); hndls = [ud.lines ud.patches]; if ~isempty(hndls) set(hndls,'MarkerSize',size); end drawreqs=[0 0 0 0]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_markercolor - change color of line markers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_markercolor(gr,color) ud = get(gr.axes,'UserData'); if ischar(color) color = cellstr(color(:)); elseif isnumeric(color) if size(color,2)==3 color = num2cell(color,2); else color = {}; end elseif ~iscell(color) color = {}; end ud.markercolor = color; set(gr.axes,'UserData',ud); % Need to check correct number given. % Then need to replot (may be filled/empty) drawreqs=[0 0 1 1]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_table - insert table into object %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_table(gr,tableptr) ud = get(gr.axes,'UserData'); ud.tableptr = tableptr; set(gr.axes,'UserData',ud); % Work out some stuff i_tablestuff(gr,ud); drawreqs=[0 1 1 0]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_tablestuff - check factor matching %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function i_tablestuff(gr,ud) % Work out some useful things for plotting tud = []; if ~isempty(ud.tableptr) && isvalid(ud.tableptr) axesptrs = ud.tableptr.get('axesptrs'); axes = ud.tableptr.get('axes'); if ~iscell(axes) % Need to set up dummy second axis for plot routine axes = [{axes} {1}]; end tud.axes = axes; tud.axesptrs = axesptrs; % Attempt to match against xfactors tud.xfactor_i = zeros(1,length(axesptrs)); tud.tfactor_i = zeros(1,length(ud.xfactors)); for i = 1:length(axesptrs) axname = axesptrs(i).getname; ind = find( strcmp( axname,cellstr(ud.xfactors) ) ); if length(ind)==1 tud.xfactor_i(i) = ind; tud.tfactor_i(ind) = i; end end tud.values = ud.tableptr.get('values'); tud.locks = ud.tableptr.get('vlocks'); end set(gr.xfactor,'UserData',tud); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_menu - insert context menu into object %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_menu(gr,menu) ud = get(gr.axes,'UserData'); ud.contextmenu = menu; set(gr.axes,'UserData',ud); hextras=get(gr.axes,'Children'); hndls=[gr.panel;gr.xtext;gr.xfactor;gr.ytext;gr.yfactor;gr.axes]; set(hndls,'UIContextMenu',menu); set(hextras(:),'UIContextMenu',menu); set(gr.colorbar,'UIContextMenu',menu); if isempty(menu) set(gr.panel, 'HitTest', 'off'); else set(gr.panel, 'HitTest', 'on'); end drawreqs=[0 0 0 0]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_fillmask - insert fillmask into object %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_fillmask(gr,mask) ud = get(gr.axes,'UserData'); ud.fillmask = mask; set(gr.axes,'UserData',ud); drawreqs=[0 0 1 1]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_marker - insert marker types into object %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_marker(gr,marker) ud = get(gr.axes,'UserData'); if ischar(marker) marker = cellstr(marker(:)); end ud.marker = marker; set(gr.axes,'UserData',ud); drawreqs=[0 0 0 1]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_callback - insert callback types into object %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_callback(gr,cb,type) ud=get(gr.axes,'UserData'); switch type case 'factor' ud.callback=cb; case 'single' ud.singlecallback=cb; case 'multi' ud.multicallback=cb; end drawreqs=[0 0 0 0]; set(gr.axes,'UserData',ud); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_excludestyle - insert limit exlusion style into object %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_excludestyle(gr,style) style = lower(style); drawreqs = [0 0 0 0]; if any( strncmp( style,{ 'color', 'blank', 'exclude' },length(style) ) ) ud = get(gr.axes,'UserData'); ud.excludestyle = style; set(gr.axes,'UserData',ud); drawreqs=[0 0 1 0]; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_yunitstring - insert display string into object %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_yunitstring(gr,yunit) if ischar(yunit) ud = get(gr.axes,'UserData'); ud.yunitstring = yunit; set(gr.axes,'UserData',ud); drawreqs=[1 0 1 0]; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_tableindex - insert table point index into object %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_tableindex(gr,index) ud = get(gr.axes,'UserData'); ud.tableindex = index; set(gr.axes,'UserData',ud); drawreqs=[0 0 1 0]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% i_settitle - insert title into object %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [gr,drawreqs]=i_settitle(gr,new) drawreqs =[0 0 0 0]; ud=get(gr.axes,'UserData'); ud.title=new; set(gr.axes,'UserData',ud); if ~isempty(ud.title) set(get(gr.axes,'Title'),'String',ud.title,'Interpreter','none'); else drawreqs(3) = 1; end