How to fill planes in a 3d Plot?

17 views (last 30 days)
Jan Tiede
Jan Tiede on 9 Jan 2018
Commented: Jan Tiede on 13 Jan 2018
Hi
I have a plot3 with several graphs in it and i want to fill the planes between the graphs and the y axis. I tried fill3 but that doesn't seem to work. Any help would be appreciated!
Cheers
Jan

Answers (1)

Matt Sprague
Matt Sprague on 11 Jan 2018
The fill3 command can be used to create the surface between your line and the y-axis. The fliplr command is used to make sure the surface vertices are in the correct order. Here's a small example for an arbitrary line.
% Original Line
x1 = linspace(0,pi/2,10);
y1 = linspace(0,pi/2,10);
z1 = sin(linspace(0,pi/2,10));
%
% Y-Axis
x2 = zeros(size(x1));
y2 = y1;
z2 = zeros(size(x1));
%
% Surface between lines
xs = [x1 fliplr(x2)];
ys = [y1 fliplr(y2)];
zs = [z1 fliplr(z2)];
%
figure(1)
plot3(x1,y1,z1,x2,y2,z2)
hold on
fill3(xs,ys,zs,'r','FaceAlpha',0.5);
grid on
xlabel('X axis')
ylabel('Y axis')
zlabel('Z axis')
hold off
  1 Comment
Jan Tiede
Jan Tiede on 13 Jan 2018
Hi Matt,
thanks for your answer. I tried to do it with my code but can't seem to produce the filled planes.
Here is how I thought it should be:
if true
%%Fill planes with colour
% Original Line
h = ones(1,26)
%
x1 = h;
y1 = RSTuvw.vw_avg(1,:);
z1 = ADCP.Range;
%
% Y-Axis
x2 = x1;
y2 = zeros(size(y1));
z2 = zeros(size(z1))
%
% Surface between lines
xs = [x1 fliplr(x2)];
ys = [y1 fliplr(y2)];
zs = [z1 fliplr(z2)];
%
figure(1)
plot3(x1,y1,z1,x2,y2,z2)
hold on
fill3(xs,ys,zs,'r','FaceAlpha',0.5);
grid on
xlabel('X axis')
ylabel('Y axis')
zlabel('Z axis')
hold off end

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!