Per the documentation for scatter3,
scatter3(X,Y,Z,S,C) draws each circle with the color specified by C. - If C is a RGB triplet or character vector or string containing a color name, then all circles are plotted with the specified color.
- If C is a three column matrix with the number of rows in C equal to the length of X, Y, and Z, then each row of C specifies an RGB color value for the corresponding circle.
- If C is a vector with length equal to the length of X, Y, and Z, then the values in C are linearly mapped to the colors in the current colormap.
For your case, you want the second option of the three, what you tried was the first.
C=[1 0 0;0 1 0;0 1 0;0 0 1];
hSc=scatter3(x,y,z,20,C);
You can, of course, write logic to create the appropriate C array based on the data rather than hardcoding as shown.
Best Answer