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 + -
显示快捷键?