Matlab как изменить расположение контурного графика на оси z
У меня есть 3d поверхность в моей фигуре surf(x,y,z)
у меня тоже есть contourf
поверхность (которая в основном является 2D плоскостью).
Я рисую их на той же фигуре, но contourf
сюжет автоматически на z=0
уровень. Я хочу переместить contourf
заговор с z=-10
(или любое значение на оси Z), но я не могу этого сделать.
Я уверен, что это легко, но я не могу найти ответ в справке MATLAB /Google. Есть идеи?
1 ответ
Рассмотрим следующий пример:
%# 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 фигуру.