How to specify the color of each face independently? Either using plot3 or waterfall plot

9 views (last 30 days)
I want to be able to change the color of each face to be different. Is there a way to do that? Either waterfall or plot3, but open to other options as well.
%Data
x = [3 4 5 6 7 8];
y = 1:10;
z = [0.557668282000000 0.338441078000000 0.234647830000000 0.171571534000000 0.145776360000000 0.145776360000000;
0.518295499000000 0.405863916000000 0.400123394000000 0.306492064000000 0.264851392000000 0.220965997000000;
0.546313444000000 0.328483225000000 0.226840432000000 0.161622549000000 0.137061307000000 0.103935323000000;
0.508053348000000 0.390929752000000 0.377395056000000 0.291840789000000 0.251892663000000 0.211123492000000;
0.528207477000000 0.314119939000000 0.215415213000000 0.149739334000000 0.124970443000000 0.092681414000000;
0.492618639000000 0.367508278000000 0.341235709000000 0.270810866000000 0.232835907000000 0.192588062000000;
0.496943074000000 0.291760348000000 0.197562551000000 0.135737349000000 0.107583568000000 0.079613728000000;
0.468728144000000 0.317795980000000 0.279181733000000 0.216618451000000 0.183463664000000 0.149361397000000;
0.423083710000000 0.245707347000000 0.158596551000000 0.113084732000000 0.082281339000000 0.061452252000000;
0.416533294000000 0.250013365000000 0.165840410000000 0.125008755000000 0.120307120000000 0.089384088000000];
%Plot
j = waterfall(x,y,z);
j.FaceColor = [1 0 0]; %change color of all faces to red, trying to do each face a different color.

Accepted Answer

Mathieu NOE
Mathieu NOE on 14 Apr 2025
let's try something
%Data
x = [3 4 5 6 7 8];
y = 1:10;
z = [0.557668282000000 0.338441078000000 0.234647830000000 0.171571534000000 0.145776360000000 0.145776360000000;
0.518295499000000 0.405863916000000 0.400123394000000 0.306492064000000 0.264851392000000 0.220965997000000;
0.546313444000000 0.328483225000000 0.226840432000000 0.161622549000000 0.137061307000000 0.103935323000000;
0.508053348000000 0.390929752000000 0.377395056000000 0.291840789000000 0.251892663000000 0.211123492000000;
0.528207477000000 0.314119939000000 0.215415213000000 0.149739334000000 0.124970443000000 0.092681414000000;
0.492618639000000 0.367508278000000 0.341235709000000 0.270810866000000 0.232835907000000 0.192588062000000;
0.496943074000000 0.291760348000000 0.197562551000000 0.135737349000000 0.107583568000000 0.079613728000000;
0.468728144000000 0.317795980000000 0.279181733000000 0.216618451000000 0.183463664000000 0.149361397000000;
0.423083710000000 0.245707347000000 0.158596551000000 0.113084732000000 0.082281339000000 0.061452252000000;
0.416533294000000 0.250013365000000 0.165840410000000 0.125008755000000 0.120307120000000 0.089384088000000];
%Plot
j = waterfall(x,y,z,zeros(size(z)));
set(j, 'FaceColor', 'flat');
set(j, 'EdgeColor', 'k');
set(j, 'FaceVertexCData', rand(size(z,1),3)) % random colors
  3 Comments
Keyur Savla
Keyur Savla on 14 Apr 2025
Edited: Keyur Savla on 14 Apr 2025
Thank you that solved the main query, how do I match the edgecolor to that of the face color?
I tried changing the edgecolor value to 'flat' but that creates an error, am I missing anything?
I do not want the edgecolor to be none, I want the edge to be visible.
Mathieu NOE
Mathieu NOE on 14 Apr 2025
well , between no edges and edges of same color as the face, I don't see a big difference in how the result will look like
and "no edges" seems to be here the only option that works or maybe there's a trick I am currently unaware of (?)
or you have to build your own version of waterfall (I don't have the time...)
%Data
x = [3 4 5 6 7 8];
y = 1:10;
z = [0.557668282000000 0.338441078000000 0.234647830000000 0.171571534000000 0.145776360000000 0.145776360000000;
0.518295499000000 0.405863916000000 0.400123394000000 0.306492064000000 0.264851392000000 0.220965997000000;
0.546313444000000 0.328483225000000 0.226840432000000 0.161622549000000 0.137061307000000 0.103935323000000;
0.508053348000000 0.390929752000000 0.377395056000000 0.291840789000000 0.251892663000000 0.211123492000000;
0.528207477000000 0.314119939000000 0.215415213000000 0.149739334000000 0.124970443000000 0.092681414000000;
0.492618639000000 0.367508278000000 0.341235709000000 0.270810866000000 0.232835907000000 0.192588062000000;
0.496943074000000 0.291760348000000 0.197562551000000 0.135737349000000 0.107583568000000 0.079613728000000;
0.468728144000000 0.317795980000000 0.279181733000000 0.216618451000000 0.183463664000000 0.149361397000000;
0.423083710000000 0.245707347000000 0.158596551000000 0.113084732000000 0.082281339000000 0.061452252000000;
0.416533294000000 0.250013365000000 0.165840410000000 0.125008755000000 0.120307120000000 0.089384088000000];
%Plot
mycolors = rand(size(z,1),3);
j = waterfall(x,y,z,zeros(size(z)));
set(j, 'FaceColor', 'flat');
set(j, 'FaceAlpha', 0.5);
set(j, 'EdgeColor', 'none');
set(j, 'FaceVertexCData', mycolors) % random colors

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!