/ / Cambie el valor z del gráfico de contorno en Matlab 2014b - matlab, gráfico, contorno

Cambie el valor z del gráfico de contorno en Matlab 2014b - matlab, gráfico, contorno

Estoy tratando de hacer una figura de una gráfica de superficie, y debajo de la superficie deseo mostrar las líneas de contorno, pero quiero que el contorno esté en z = -1 en lugar de en el valor predeterminado 0. Encontré un post anterior sobre este problema. aquí, pero cuando intento la solución el contorno sigue en z = 0. Tal vez tenga algo que ver con la versión de MATLAB que estoy usando, ¿cuál es 2014b? ¿Alguna idea sobre cómo hacer que funcione?

El código que probé:

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

Respuestas

0 para la respuesta № 1

Entonces, realmente no pude descifrarlo como se propuso en el ejemplo que encontré y publiqué, pero encontré una manera que funciona. Lo que terminé haciendo fue básicamente esto:

figure
hold on
surf(X,Y,Z+1);
contour(X,Y,Z);
zz = get(gca,"ZTick");
set(gca,"ZTickLabel",sprintf("%3.1fn",zz-1));

Esto me da el surf y el contorno en la misma figura, pero produce algunos problemas con las asignaciones de color.


0 para la respuesta № 2

Descubrí cómo resolver el problema con las asignaciones de color que enfrentó Kine. Nota: He hecho el siguiente código en MATLAB R2015b:

offset = 0.5;
plotHandle = surfc(X1, Y1, Z1);
hold on;
% This line moves the surface up from its original location and increases the space between the surface and the contour plot
plotHandle(1).ZData = plotHandle.ZData + offset;
% However in doing so the color mappings are changed. So, the line below restores these mappings
plotHandle(1).CData = plotHandle.CData - offset;

% This line changes fills the contour plot
plotHandle(2).Fill = "on";
grid on;

% The following lines draw critical areas on the contour line, as it was more readable in my case
axisHandle = gca;
ZHeight = axisHandle.ZLim(1);
plot3(X2, Y2, ZHeight, "o", "MarkerSize", 10, "LineWidth", 1, "Color", "k", "MarkerFaceColor", "m");
plot3(Y2, X2, ZHeight, "o", "MarkerSize", 10, "LineWidth", 1, "Color", "k", "MarkerFaceColor", "m");

hold off

0 para la respuesta № 3

Tengo el mismo problema. Y finalmente, conseguí el contourf en el plano Z = -10. Mi versión de MATLAB es

Versión de MATLAB: 8.5.0.197613 (R2015a)

Espero que los códigos te funcionen.

clear all
clc

[X,Y,Z] = peaks;

[~,hContour] = contourf(X,Y,Z,20,"edgecolor","none");

hContour.ContourZLevel = -10; % set the contour"s Z position

view(44,30)

colormap(jet)