function h=cplot(x,y,varargin) %CPLOT colored linear plot % CPLOT(X,Y,C) plots a line (Y vs. X) with the color specified by C. % If X is a matrix, one line per column is created (Y&C should match its size then) % Colors are interpolated according to current colormap & caxis. % CPLOT(X,Y) is equivalent to CPLOT(X,Y,Y). % CPLOT(...,linespec) specifies the style of the line used (cf. PLOT) % all other parameters are passed to the PATCH object (e.g. MarkerSize, etc.) % H=CPLOT(...) returns handle(s) of PATCH object. % % Example: cplot(-5:.1:5,cos(-5:.1:5)); % % Note: you can use ('edgecolor','interp'), but neither line thickness, % nor line style will work (at least with Matlab 5.3Win) % Note: PATCH objects are much slower than LINEs. Be patient with larger plots(~1e6 points) % 5/21/2001 ashcherbina@ucsd.edu arg=varargin; if isempty(arg) | isstr(arg{1}) c=y; else c=arg{1}; arg={arg{2:end}}; end % get the linestyle line=[]; marker=[]; if ~isempty(arg) % [line,marker]=lstyle(arg{1}); if (~isempty(line) | ~isempty(marker)) if length(arg)>1, arg={arg{2:end}}; else arg={}; end end end if (isempty(line) & ~isempty(marker)) line='none'; elseif (~isempty(line) & isempty(marker)) marker='none'; elseif (isempty(line) & isempty(marker)) line='-';marker='none';end if any(size(x)==1) x=[x(:);nan]; y=[y(:);nan]; c=[c(:);nan]; else x=[x;x(1,:)*nan]; y=[y;y(1,:)*nan]; c=[c;c(1,:)*nan]; end cax = newplot; hh=patch(x,y,0); set(hh,'cdata',c,'LineStyle',line,'Marker',marker); set(hh,'facecolor','none','edgecolor','flat'); if (~isempty(arg)) set(hh,arg{:}); end box on; if nargout>0, h=hh;end;