plottopo.m
来自「含有多种ICA算法的eeglab工具箱」· M 代码 · 共 897 行 · 第 1/3 页
M
897 行
end [yvalstmp,xvalstmp] = pol2cart(Th,Rd); % translate from polar to cart. coordinates xvals(nonemptychans) = xvalstmp; yvals(nonemptychans) = yvalstmp; % find position for other channels % -------------------------------- totalchans = length(g.chanlocs); emptychans = setdiff(1:totalchans, nonemptychans); totalchans = floor(sqrt(totalchans))+1; for index = 1:length(emptychans) xvals(emptychans(index)) = 0.7+0.2*floor((index-1)/totalchans); yvals(emptychans(index)) = -0.4+mod(index-1,totalchans)/totalchans; end; channames = channames(channelnos,:); xvals = xvals(channelnos); yvals = yvals(channelnos);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% xvals = 0.5+PLOT_WIDTH*xvals; % controls width of plot array on page!% yvals = 0.5+PLOT_HEIGHT*yvals; % controls height of plot array on page!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%xvals = (xvals-mean([max(xvals) min(xvals)]))/(max(xvals)-min(xvals)); % recenterxvals = gcapos(1)+gcapos(3)/2+PLOT_WIDTH*xvals; % controls width of plot % array on current axesyvals = gcapos(2)+gcapos(4)/2+PLOT_HEIGHT*yvals; % controls height of plot % array on current axes%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Plot traces %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% xdiff=xmax-xmin; ydiff=ymax-ymin; Axes = []; for P=0:datasets-1, % for each data epoch fprintf('trace %d: ',P+1); for c=1:chans, %%%%%%%% for each data channel %%%%%%%%%%%%%%%%%%%%%%%%%% if P>0 % subsequent pages (Axes specified) axes(Axes(c)) hold on; % plot down left side of page first axis('off') else % first page, specify axes xcenter = xvals(c); ycenter = yvals(c); Axes = [Axes axes('Units','Normal','Position', ... [xcenter-axwidth/2 ycenter-axheight/2 axwidth axheight])]; axes(Axes(c)) axis('off') hold on; % plot down left side of page first % set(h,'YLim',[ymin ymax]); % set default plotting parameters % set(h,'XLim',[xmin xmax]); axislcolor = get(gca,'Xcolor'); %%CJH axis('off'); % %%%%%%%%%%%%%%%%%%%%%%% Highlight regions %%%%%%%%%%%%%%%%%%%%%%%%%% % if ~isempty(g.regions) for index=1:size(g.regions{c},2) tmpreg = g.regions{c}(:,index); tmph = patch([tmpreg(1) tmpreg(2) tmpreg(2) tmpreg(1)], ... [-100 -100 100 100], [1 1 0.9]); hold on; set(tmph, 'edgecolor', [1 1 0.9]); end; end; % secondx = 200; % draw second vert axis % axis('off');plot([secondx secondx],[ymin ymax],'color',axislcolor); % %%%%%%%%%%%%%%%%%%%%%%% Print channel names %%%%%%%%%%%%%%%%%%%%%%%%%% % NAME_OFFSET = -1; NAME_OFFSETY = -0.5; if ISSPEC axis('off'),h=text(xmin-NAME_OFFSET*xdiff,ymax/2,[channames(c,:)]); set(h,'HorizontalAlignment','right'); % print before traces set(h,'FontSize',CHANFONTSIZE); % choose font size else % ~ISSPEC if ymin <= 0 & ymax >= 0, yht = 0; else yht = mean(data(c,1+P*g.frames:1+P*g.frames+g.frames-1)); end if ~ISRECT % print before traces axis('off'),h=text(xmin-NAME_OFFSET*xdiff,yht-NAME_OFFSETY*ydiff,[channames(c,:)]); set(h,'HorizontalAlignment','right'); set(h,'FontSize',CHANFONTSIZE); % choose font size else % ISRECT xmn = xdiff/2+xmin; axis('off'),h=text(xmn,ymax+0.05*ymax,[channames(c,:)]); set(h,'HorizontalAlignment','right'); set(h,'FontSize',CHANFONTSIZE); % choose font size end % ISRECT end % ~ISSPEC end; % P=0 % %%%%%%%%%%%%%%%%%%%%%%% Plot data traces %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Pind = mod(P+1-1, length(g.colors))+1; if ~iscell( g.colors{Pind} ), tmpcolor = { g.colors{Pind} 'linewidth' LINEWIDTH }; else tmpcolor = g.colors{Pind}; end; if ~ISSPEC % -/+ plot, normal case (e.g., not spectra), plot data trace plot(x,data(c,1+P*g.frames:1+P*g.frames+g.frames-1), 'color', tmpcolor{:}); ymn = min([ymax ymin]); ymx = max([ymax ymin]); if g.ydir == -1 set(gca, 'ydir', 'reverse'); end; axis([xmin xmax ymn ymx]); % set axis bounds else % ISSPEC plot(x,data(c,1+P*g.frames:1+P*g.frames+g.frames-1), 'color', tmpcolor{:}); ymaxm = ymax; if ymaxm/2. > ymax, ymaxm = ymaxm/2.; end; if g.ydir == -1 set(gca, 'ydir', 'reverse'); end; axis([xmin xmax ymin ymaxm]); % set axis values end % %%%%%%%%%%%%%%%%%%%%%%% Plot lines %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % if P == datasets-1 if ISSPEC plot([xmin xmin],[0 ymax],'color',axislcolor); else plot([0 0],[ymin ymax],'color',axislcolor); % draw vert axis at time 0 end axis('off'); plot([xmin xmax],[0 0],'color',axislcolor); % draw horizontal axis end; % %%%%%%%%%%%%%%%%%%%% plot vertical lines (optional) %%%%%%%%%%%%%%%%% % if ~isnan(g.vert) if ~ISSPEC % -/+ plot, normal case (e.g., not spectra), plot data trace ymean = (ymin+ymax)/2; vmin = ymean-0.5*(ymean-ymin); vmax = ymean+0.5*(ymax-ymean); for v = g.vert plot([v v],[ymin ymax],'color',vertcolor); % draw vertical lines end else for v = g.vert plot([v v],[0 ymax],'color',vertcolor); end end end fprintf(' %d',c); % finished with channel plot end; % c, chans / subplot % handle legend if nolegend, g.legend{P+1} = ['Data ' int2str(P) ]; end; fprintf('\n'); end; % P / epoch % %%%%%%%%%%%%%%%%%%%%% Make time and amp cal bar %%%%%%%%%%%%%%%%%%%%%%%%% % ax = axes('Units','Normal','Position', ... [0.80 0.1 axwidth axheight]); % FIX!!!! axes(ax) axis('off'); if ~ISSPEC, if xmin <=0 p=plot([0 0],[ymn ymx],'color','k'); % draw vert axis at zero else p=plot([xmin xmin],[ymn ymx],'color','k'); % draw vert axis at zero end if g.ydir == -1 set(gca, 'ydir', 'reverse'); end; axis([xmin xmax ymn ymx]); % set axis values hold on %set(p, 'Clipping','off'); % center text elseif ISSPEC ylo=0; plot([xmin xmin],[0 ymax],'color',axislcolor); axis([xmin xmax ylo ymaxm]); % set axis values end p=plot([xmin xmax],[0 0],'color',axislcolor); % draw horizontal axis axis([xmin xmax ymin ymax]); % set axis values % %%%%%%%%%%%%%%%%%%%% plot vertical lines (optional) %%%%%%%%%%%%%%%%% % if ~isnan(g.vert) if ~ISSPEC % -/+ plot, normal case (e.g., not spectra), plot data trace for v = g.vert plot([v v],[vmin vmax],'color',vertcolor); % draw vertical lines end else for v = g.vert plot([v v],[0 ymax],'color',vertcolor); end end end % secondx = 200; % draw second vert axis % axis('off');plot([secondx secondx],[ylo ymax],'color',axislcolor); % %%%%%%%%%%%%%%%%%%%%% Plot negative-up %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % if ~ISSPEC % not spectral data signx = xmin-0.15*xdiff; axis('off');h=text(signx, ymin,num2str(ymin,3)); % text ymin set(h,'FontSize',TICKFONTSIZE); % choose font size set(h,'HorizontalAlignment','right','Clipping','off'); axis('off');h=text(signx, ymax,['+' num2str(ymax,3)]); % text +ymax set(h,'FontSize',TICKFONTSIZE); % choose font size set(h,'HorizontalAlignment','right','Clipping','off'); ytick = g.ydir*(-ymax-0.3*ydiff); tick = [int2str(xmin)]; h=text(xmin,ytick,tick); set(h,'FontSize',TICKFONTSIZE); % choose font size set(h,'HorizontalAlignment','center',... 'Clipping','off'); % center text tick = [xlabel]; h=text(xmin+xdiff/2,ytick-0.5*g.ydir*ydiff,tick); set(h,'FontSize',TICKFONTSIZE); % choose font size set(h,'HorizontalAlignment','center',... 'Clipping','off'); % center text tick = [int2str(xmax)]; h=text(xmax,ytick,tick); set(h,'FontSize',TICKFONTSIZE); % choose font size set(h,'HorizontalAlignment','center',... 'Clipping','off'); % center text % %%%%%%%%%%%%%%%%%%%%% Plot positive-up [0,ymax] %%%%%%%%%%%%%%%%%%%%%%%% % else % ISSPEC ymin=0; signx = xmin-0.15*xdiff; axis('on');h=text(signx,-1*ymin,num2str(ymin,3));% text ymin set(h,'FontSize',TICKFONTSIZE); % choose font size set(h,'HorizontalAlignment','right','Clipping','off'); axis('on');h=text(signx,-1*ymax,['+' num2str(ymax,3)]); % text +ymax set(h,'FontSize',TICKFONTSIZE); % choose font size set(h,'HorizontalAlignment','right','Clipping','off'); ytick = -ymax-0.25*ydiff; tick = [int2str(xmin)]; h=text(xmin,ytick,tick); set(h,'FontSize',TICKFONTSIZE); % choose font size set(h,'HorizontalAlignment','center',... 'Clipping','off'); % center text tick = [xlabel]; h=text(xmin+xdiff/2,ytick,tick); set(h,'FontSize',TICKFONTSIZE); % choose font size set(h,'HorizontalAlignment','center',... 'Clipping','off'); % center text tick = [int2str(xmax)]; h=text(xmax,ytick,tick); set(h,'FontSize',TICKFONTSIZE); % choose font size set(h,'HorizontalAlignment','center',... 'Clipping','off'); % center text end; % if ISSPEC if length(g.legend) > 1 & strcmpi(g.showleg, 'on') tmpleg = vararg2str(g.legend); quotes = find(tmpleg == ''''); for index = length(quotes):-1:1 tmpleg(quotes(index)+1:end+1) = tmpleg(quotes(index):end); tmpleg(quotes(index)) = ''''; end; tmpleg = [ 'legend(' tmpleg ');' ]; else tmpleg = ''; end; com = [ 'axis on;' ... 'clear xlabel ylabel;' tmpleg ... 'xlabel(''''Time (ms)'''');' ... 'ylabel(''''Voltage (\muV)'''');' ]; axcopy(gcf, com); % turn on popup feature%%%%%%%%%%%%%%%%%%% Make printed figure fill page %%%%%%%%%%%%%%%%%%%%%%%%%%%%orient tall % curfig = gcf; % h=figure(curfig); % set(h,'PaperPosition',[0.2 0.3 7.6 10]); % stretch out the plot on the page
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?