我的图形中有一个 3d 表面 surf(x,y,z)
我还有一个 contourf
表面(基本上是一个 2D 平面)。
我将它们绘制在同一个图中,但 contourf
图自动处于 z=0
级别。我想将 contourf
图移动到 z=-10
(或 z 轴上的任何值),但我做不到。
我相信这很容易,但我在 MATLAB 帮助/谷歌中找不到答案。
有任何想法吗?
最佳答案
考虑以下示例:
%# plot surface and contour
Z = peaks;
surf(Z), hold on
[~,h] = contourf(Z); %# get handle to contourgroup object
%# change the ZData property of the inner patches
hh = get(h,'Children'); %# get handles to patch objects
for i=1:numel(hh)
zdata = ones(size( get(hh(i),'XData') ));
set(hh(i), 'ZData',-10*zdata)
end
更新:
以上不再适用于 HG2。可以使用轮廓
ContourZLevel
的隐藏属性来修复它:Z = peaks;
surf(Z), hold on
[~,h] = contourf(Z);
h.ContourZLevel = -10;
您也可以使用
hgtransform
来实现类似的事情,这是记录和推荐的方法。请参阅我的另一个答案以获取进一步解释: plot multiple 2d contour plots in one 3d figure 。