Im trying to plot n [X,Y,Z] dots in 3d with their colors given by C which is a nx3 matrix describing the RGB colors for each dot (graded colors).... but its not working!!!!
scatter3(X,Y,Z,S,C, 'filled')
any suggestions?

 Akzeptierte Antwort

Geert
Geert am 5 Sep. 2013

0 Stimmen

Have a look at the example in the help:
[x,y,z] = sphere(16);
X = [x(:)*.5 x(:)*.75 x(:)];
Y = [y(:)*.5 y(:)*.75 y(:)];
Z = [z(:)*.5 z(:)*.75 z(:)];
S = repmat([1 .75 .5]*10,numel(x),1);
C = repmat([1 2 3],numel(x),1);
scatter3(X(:),Y(:),Z(:),S(:),C(:),'filled')

4 Kommentare

Mario Trevino
Mario Trevino am 5 Sep. 2013
in my case X is [n x 1] and C is [n x 3], that's where Im stuck
Image Analyst
Image Analyst am 5 Sep. 2013
You have to set up each row of C to give the color you want for that data marker. For example, if you want marker #42 to have magenta, you need to do this:
C(42, :) = [1 0 1]; % Row 5 for marker #5 is magenta.
Same for all the other markers. So . . . what did you actually do?
Mario Trevino
Mario Trevino am 5 Sep. 2013
ok great... found the problem. I defined each column of C within the range 0-255, and this is what was making the plotter fail. Once I normalized my colors dividing by 255 it all worked nice. thanks!!!!!!!
Image Analyst
Image Analyst am 11 Jul. 2014
Yes, any function in MATLAB that takes a 3 element numerical array for color must be in the range 0-1 instead of 0-255. If you have 255 numbers, for example determined them from some artwork in Photoshop of wherever, then you can just divide by 255
color255 = [100, 150, 240];
myColor = color255 / 255; % Then use this array in scatter() or wherever...

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by