You can also do this with a trick that works with the Matlab version before 2014b (back in 2009a at least).
However, it will never be as easy as you expected (if you do not write a wrapper for one of the solutions here, you can forget about plot(x,y,{'r','o','y','g','b'}) ).
The trick is to use surface instead of the line object. Surfaces benefit from their CData properties and many useful features for using color maps and textures.
Matlab surf does not process 1D data, it needs a matrix as input, so we are going to give it by simply duplicating each set of coordinates (for example, xx=[x,x] ).
Do not worry, although the surface will remain as thin as the line, so the end result is not ugly.
%% // your data M=[140400 70.7850 1 140401 70.7923 2 140402 70.7993 3 140403 70.8067 4 140404 70.8139 5 140405 70.8212 3]; x = M(:,1) ; %// extract "X" column y = M(:,2) ; %// same for "Y" c = M(:,3) ; %// extract color index for the custom colormap %% // define your custom colormap custom_colormap = [ 1 0 0 ; ... %// red 1 .5 0 ; ... %// orange 1 1 0 ; ... %// yellow 0 1 0 ; ... %// green 0 0 1 ; ... %// blue ] ; %% // Prepare matrix data xx=[xx]; %// create a 2D matrix based on "X" column yy=[yy]; %// same for Y zz=zeros(size(xx)); %// everything in the Z=0 plane cc =[cc] ; %// matrix for "CData" %// draw the surface (actually a line) hs=surf(xx,yy,zz,cc,'EdgeColor','interp','FaceColor','none','Marker','o') ; colormap(custom_colormap) ; %// assign the colormap shading flat %// so each line segment has a plain color view(2) %// view(0,90) %// set view in XY plane colorbar
will get you:

As an example of a more general case:
x=linspace(0,2*pi); y=sin(x) ; xx=[x;x]; yy=[y;y]; zz=zeros(size(xx)); hs=surf(xx,yy,zz,yy,'EdgeColor','interp') %// color binded to "y" values colormap('hsv') view(2) %// view(0,90)
will give you a sine wave with a color corresponding to the y value:
