MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Bharath Lohray on 30 Apr 2013

I would like to have a 2D plot along with a 3D surface or mesh plot - shown by the blue line I drew on the surface plot below. How do I get it?

Answer by Kye Taylor on 1 May 2013

Accepted answer

Does this get you started?

% create figure figure

% Generate data to make a surface x = -1:0.1:1; y = -1:0.1:1; [X,Y] = meshgrid(x,y); Z = X.^2 + Y.^2 - 1; % visualize 3D surface surf(X,Y,Z)

% Generate data to make line plot in plane z = minimumZValue minimumZValue = min(Z(:)); t0 = linspace(0,2*pi); x0 = .8*cos(t0); y0 = .8*sin(t0); % visualize line plot line(x0,y0,minimumZValue*ones(size(t0)),'linewidth',2)

% Generate data to make line plot in plane x = minimumXValue minimumXValue = min(X(:)); y00 = linspace(min(Y(:)),max(Y(:))); % will be shifted to make z = minimumZValue the new z = 0 z00 = exp(-5*y00.^2); z00 = z00 + minimumZValue; % comment this out to see effect line(minimumXValue(ones(size(y00))),y00,z00,'linewidth',2,'color','r')

xlabel('x') ylabel('y') grid on view(3)

Walter Roberson on 1 May 2013

Notice that Kye has used a 3-dimensional line rather than a 2-dimensional one. The equivalent higher-level routine would be plot3().

If you attempt to put a 2 dimensional plot in with a 3 dimensional plot, then although you might be able to get it to work with a specific view, it would stop working if you rotated the view at all.

Bharath Lohray on 1 May 2013

Hi, It works on being rotated as well - unless the answer got edited after your comment.

I got it to work, but My data had two different ranges. This shrinks my plot to a ceiling surface. Is there a way to plot with 2 Y axis? The continuing http://www.mathworks.com/matlabcentral/answers/74232-how-do-i-add-2-y-axis-to-my-matlab-plot

## 2 Comments

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/74160#comment_146491

http://stackoverflow.com/questions/16309153/how-do-i-add-a-2d-plot-along-with-a-surface-or-mesh-plot-in-matlab/

As answered on StackOverflow.

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/74160#comment_146594

Kye's Solution works. But it shrinks my plot to a ceiling surface. Is there a way to plot with 2 Y axis? The continuing question - http://www.mathworks.com/matlabcentral/answers/74232-how-do-i-add-2-y-axis-to-my-matlab-plot