Matlab 三维曲面上的二维等高线图
我有一个二维的等高线图,我想放在一个圆柱体上。这意味着我的2D图的一个方向是轴向Z,另一个方向是方位角方向Phi。对于半径,我想使用0.5的值 对于φ,z和我想要绘制的数据,我有3D数据: 第一维度:z方向 第二维:φ方向 三维:r维 我首先将其转换为二维数组: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')
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;我想这会有帮助: