Matlab如何在z轴上改变contourf plot的位置

时间:2011-11-08 17:58:17

标签: matlab 3d plot z-axis

我的图surf(x,y,z)

中有一个3d表面

我还有contourf曲面(基本上是2D平面)。

我将它们绘制在同一图中,但contourf图自动处于z=0级别。我想将contourf绘图移动到z=-10(或z轴上的任何值),但我不能这样做。

我确信这很容易但我在MATLAB help / Google中找不到答案。 有什么想法吗?

1 个答案:

答案 0 :(得分:10)

考虑以下示例:

%# 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

screenshot


更新:

以上在HG2中不再起作用。可以使用轮廓ContourZLevel的隐藏属性来修复它:

Z = peaks;
surf(Z), hold on
[~,h] = contourf(Z);
h.ContourZLevel = -10;

您还可以使用hgtransform来实现类似的操作,这是记录和推荐的方法。

请参阅我的另一个答案以获得进一步解释:plot multiple 2d contour plots in one 3d figure