3D plotting help

2 visualizaciones (últimos 30 días)
jiyoung lee
jiyoung lee el 15 de Jun. de 2019
Editada: dpb el 16 de Jun. de 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

Respuesta aceptada

dpb
dpb el 16 de Jun. de 2019
Editada: dpb el 16 de Jun. de 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.

Más respuestas (0)

Categorías

Más información sobre Line Plots en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by