3D plotting help

조회 수: 4 (최근 30일)
jiyoung lee
jiyoung lee 2019년 6월 15일
편집: dpb 2019년 6월 16일
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

채택된 답변

dpb
dpb 2019년 6월 16일
편집: dpb 2019년 6월 16일
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.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Line Plots에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by