3D plotting help

2 views (last 30 days)
jiyoung lee
jiyoung lee on 15 Jun 2019
Edited: dpb on 16 Jun 2019
I want to change the dot colour in a 3D graph according to range
For example A(1,1,1) B(2,2,2), C(3,3,3) D(4,4,4) ... (X,Y,Z)
And
X<=1, Y<=1, Z<=1 --> red dot /
1<X<=3, 1<Y<=3, 1<Z<=3 --> green dots /
3<X<=5, 3<Y<=5, 3<Z<=5 --> blue dot
(Please code easy to change the number)
-------------------------------------------------
Here what i've done
-------------------------------------------------
data=[1,1,1 ; 2,2,2 ; 3,3,3; 4,4,4]
x=data(:,1);
y=data(:,2);
z=data(:,3);
figure
scatter3(x,y,z)
I already tried --------- scatter3(x,y,z,50,z,'filled')------- and it changed all dots' colour
And one more, i want to divide the sections and change the colour of each section
Thank you

Accepted Answer

dpb
dpb on 16 Jun 2019
Edited: dpb on 16 Jun 2019
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.

More Answers (0)

Categories

Find more on Line Plots in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!