我正在使用 contourf 函数创建等高线图:
我想让网格线出现在显示轮廓的平面顶部。
我遇到了一种解决方案,但它仅适用于 2D(即当您查看 2D 中的等高线图时),它涉及以下两个命令:
grid on
set(gca,'layer','top');
但是,在 3D 中查看轴时不会出现网格线。有没有办法简单地做到这一点?
您可以使用line
重写网格线的对象操作或称为 gridxy的小型 FEX 工具来完成此操作。例如,让我们重新创建一个具有相同属性的图形:
figure
set(gcf,'Renderer','OpenGL')
%# 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
并添加额外的网格线:
v = get(gca);
hg=gridxy(get(gca,'XTick'),get(gca,'YTick'), 'Color',[1,1,1]*0.25,'Linestyle',':');
set(hg,'Zdata',repmat(v.ZLim(1)+eps,[1 numel(get(hg,'Ydata'))]));
但是,有理由不使用surfc
吗?例如:
Z = peaks(20);
surfc(Z);
view(-45, 20);