Q:I have a [N,4] data set which I want to visualize as 3d line representing the fourth column as a color. Any ideas on how to do this?
A: Simplest solution is to make a scatter plot rather than a line plot:
</pre>
% Make some fake data x = linspace(0,1); % x = data(:,1); y = cos(10*x); % y = data(:,2); z = sin(15*x); % z = data(:,3); c = x+y-z; % c = data(:,4); figure scatter3(x,y,z,2,c) colorbar
If, however, you really need lines, you probably need to brute-force it.
figure cmap = colormap; % change c into an index into the colormap % min(c) -> 1, max(c) -> number of colors c = round(1+(size(cmap,1)-1)*(c - min(c))/(max(c)-min(c))); % make a blank plot plot3(x,y,z,'linestyle','none') % add line segments for k = 1:(length(x)-1) line(x(k:k+1),y(k:k+1),z(k:k+1),'color',cmap(c(k),:)) end colorbar
Here I'm using the default colormap for the figure to define the colors. You can specify colors however you want, as long as you have a way to index into them.
Qer: Excelent solution, I would only like to add a change in the colorbar limits
caxis([ min(c) , max(c)]) % colorbar limits
reference:
http://www.mathworks.com/matlabcentral/answers/34750-plot3-color