9

我的图中有一个 3d 表面surf(x,y,z)

我也有一个contourf表面(基本上是一个二维平面)。

我将它们绘制在同一个图中,但contourf情节自动处于z=0水平。我想将contourf绘图移动到z=-10(或 z 轴上的任何值),但我做不到。

我确信这很容易,但我在 MATLAB 帮助/谷歌中找不到答案。有任何想法吗?

4

1 回答 1

13

考虑以下示例:

%# 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来实现类似的东西,这是文档化和推荐的方法。

请参阅我的另一个答案以获得进一步解释:在一个 3d 图中绘制多个 2d 等高线图

于 2011-11-08T18:39:17.470 回答