当前位置: 动力学知识库 > 问答 > 编程问答 >

Matlab 2d contour plot in 3d

问题描述:

I would like to plot a 2d contour plot in 3d space but it should not be on the XY plane but on the ZX plane. Is there a way to change the plane on which it is ploted?

Here is some example:

figure;

contourf(ZZ1,YZ1,EH);

hold all;

line([0 0],[0 0],[0 1]);

view(25,20);

Output:

And I want the Contour plot on the plane facing me!

网友答案:

This is just a rough idea of how it could work using contourslice:

p = peaks(21);
contourf(p);
view(25,20);

Insert your data instead of peaks(21) and be careful with the dimensions. Then you can do something like

%Get a grid for your data. x and z have dimensions of your old data grid,
%y will is used to build a volume, which will have three slices with the
%data, which is necessary because contourslice takes a volume, not a surface
x = -2:0.2:2;
y = -0.1:0.1:0.1;
z = -2:0.2:2;
[X,Y,Z] = meshgrid(x,y,z);
%Make your data matrix (which is 2D so far) 3D by repeating 3 times in Z
u = repmat(p, [1, 1, 3]);
Sx = []; %No planes to be drawn orthogonal to X
Sy = 0;  %One plane to be drawn orthogonal to Y
Sz = []; %No planes to be drawn orthogonal to Z
%Only draw one of your three y planes. Change X and Z.
figure;
contourslice(X,Y,Z,permute(u,[3, 2, 1]),Sx,Sy,Sz)
view(25,20);

to get

分享给朋友:
您可能感兴趣的文章:
随机阅读: