Matlab 三维曲面上的二维等高线图

Matlab 三维曲面上的二维等高线图,matlab,plot,Matlab,Plot,我有一个二维的等高线图,我想放在一个圆柱体上。这意味着我的2D图的一个方向是轴向Z,另一个方向是方位角方向Phi。对于半径,我想使用0.5的值 对于φ,z和我想要绘制的数据,我有3D数据: 第一维度:z方向 第二维:φ方向 三维:r维 我首先将其转换为二维数组: YY(:,:)=phi(:,:,63); ZZ(:,:)=z(:,:,63); EE(:,:)=E2(:,:,63); 63是最后一个条目 然后我画出等高线: contourf(YY,ZZ,EE,'LineColor','none')

我有一个二维的等高线图,我想放在一个圆柱体上。这意味着我的2D图的一个方向是轴向Z,另一个方向是方位角方向Phi。对于半径,我想使用0.5的值

对于φ,z和我想要绘制的数据,我有3D数据:

第一维度:z方向 第二维:φ方向 三维:r维 我首先将其转换为二维数组:

YY(:,:)=phi(:,:,63);
ZZ(:,:)=z(:,:,63);
EE(:,:)=E2(:,:,63);
63是最后一个条目

然后我画出等高线:

contourf(YY,ZZ,EE,'LineColor','none');
这给了我以下信息:

但是我不想让图片是平面的,我想让它成为圆柱体的外表面


非常感谢您的帮助

为此,必须从等高线图中提取高度/等高线数据作为矩阵,然后将其应用于圆柱体

这可以按如下方式进行

[C, hc]=contourf(YY,ZZ,EE,'LineColor','none'); %Youll want a handle to your contour map.
zdat=hc.ZData; %extract data as matrix.
[Xc, Yc, Zc]=cylinder;
h=surf(Xc, Yc, Zc); %create cylinder
set(h, 'Cdata', zdat, 'Facecolor', 'TextureMap'); %set zdat as texturemap

Thx@nivag,工作完美! 但我决定先保存绘图,然后再加载,因为这样,图片的分辨率会更好

figure;
contourf(YY,ZZ,EE,'LineColor','none');

axis off
set(gca, 'units' ,'norm', 'position', [0 0 1 1])

print contour.tiff -dtiff -r100

file = imread('contour.tiff');

[Xc, Yc, Zc]=cylinder;
h=surf(Xc, Yc, Zc);

h = findobj('Type','surface'); 

pic = file;
set(hs,'CData', flipud(pic),'FaceColor','texturemap')
colorbar;
shading flat;
alpha(0.8);

view(25,20);
axis vis3d;
axis equal;
colormap default

这看起来真的很好,但我的问题是,该地区旁边的绘图是不透明的!有没有办法告诉matlab使背景透明?

提示:对于矩阵维度中的最后一个条目,可以使用end,即YY:,:=phi:,:,end;我想这会有帮助: