There are a few ways: using functions like volumeViewer, volshow, or slicechan. Alternatively, you could create a 3D volume from your images and color-code based on depth with a colormap. For surfaces, using patch or scatter3 is an option. I think volumeViewer could work well with this, especially if you combine your image stacks into one volumetric object.
You can treat your focal stack as a 3D point cloud and color-code by the slice index (depth). For example, if your stack is a cell array of images or a 3-D array V(:,:,k), do something like:
[X,Y,Z] = meshgrid(1:W, 1:H, zDepths);
X = X(:); Y = Y(:); Z = Z(:);
scatter3(X, Y, Z, 4, Z, '.');
colorbar('Ticks',1:D,'TickLabels',zDepths);
xlabel('X'); ylabel('Y'); zlabel('Depth');
This plots every pixel at its (x,y,depth) location and colors it according to the depth index. Adjust zDepths to your actual focal distances.
Follow me so you can message me anytime with future questions. If this helps, please accept the answer and upvote it as well.