Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab如何改变轮廓图';s在z轴上的位置_Matlab_3d_Plot_Z Axis - Fatal编程技术网

Matlab如何改变轮廓图';s在z轴上的位置

Matlab如何改变轮廓图';s在z轴上的位置,matlab,3d,plot,z-axis,Matlab,3d,Plot,Z Axis,我的体形中有一个3d曲面surf(x,y,z) 我还有一个contourf曲面(基本上是二维平面) 我在同一个图中绘制它们,但是tourtf绘图自动处于z=0级别。我想将tourtf绘图移动到z=-10(或z轴上的任何值),但我做不到 我确信这很容易,但我在MATLAB帮助/Google中找不到答案。 有什么想法吗?考虑以下示例: %# plot surface and contour Z = peaks; surf(Z), hold on [~,h] = contourf(Z);

我的体形中有一个3d曲面
surf(x,y,z)

我还有一个
contourf
曲面(基本上是二维平面)

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

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

考虑以下示例:

%# 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;
您还可以使用来实现类似的事情,这是有文档记录和推荐的方法


请参阅我的另一个答案以获得进一步解释:.

如果你讨厌循环,你可以在一行中重写最后一部分:
set(hh,{'ZData'},cellfun(@(x)-10*one(size(x)),get(hh,{'XData'},'UniformOutput',false))
。谢谢。我只需要学习更多关于对象的知识,以及如何使用get和set来“检查”和“更改”我喜欢的东西。除了Matlab帮助之外,你还知道什么好的参考/教程吗?@Amro nice one。这肯定会派上用场的。