Multiple 2d "contourf" surfaces in a 3d figure

조회 수: 1 (최근 30일)
Enrico
Enrico 2014년 7월 29일
댓글: Philippe Corner 2019년 9월 2일
Hi all,
I'd like to plot multiple (y,z) 2d surfaces (made with contourf function) at different position on x, in order to obtain 3d figure, exactly like this image:
Could you help me?
Thanks a lot

답변 (1개)

Aurele Turnes
Aurele Turnes 2014년 8월 6일
To recreate something like the figure attached, you can first create the planar surface in the 3D-plane using the surface function with appropriate (x,y,z) values and then set the CData properties of those surfaces to be your image slices. I am not certain that you can use contourf for this, but you can plot your images directly instead. For instance, if your images are contained in a 3d-matrix Z, where the third dimension indexes the slice number, you could try the following code:
% get the size of Z (P indicates the number of images to be plotted
[M,N,P] = size(Z);
figure;
hold on
for i=1:P
% Create a plane at x=i
h = surface(i*ones(1,M),1:N,repmat([M:-1:1],N,1),repmat([M:-1:1],N,1));
% set the color of the plane to be the image
h.CData = Z(:,:,i)';
% set some extra properties
h.CDataMapping = 'direct';
h.EdgeColor = 'none';
end
% set the viewing angle
view(3)

카테고리

Help CenterFile Exchange에서 Lighting, Transparency, and Shading에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by