我有2D的等高线图,我想放在一个圆柱体上。这意味着我的2D绘图的一个方向是轴向(z),另一个是方位角方向(phi)(辐射)。对于Radius,我想使用0.5的值。
对于phi,z和我要绘制的数据,我有3D数据:
我首先将其转换为2D数组:
YY(:,:)=phi(:,:,63);
ZZ(:,:)=z(:,:,63);
EE(:,:)=E2(:,:,63);
(63是最后一个条目!)
比我绘制轮廓:
contourf(YY,ZZ,EE,'LineColor','none');
但是我不想将图片放在平面上我希望将它作为圆柱体的外表面!
非常感谢任何帮助!
答案 0 :(得分:0)
为此,您必须从等高线图中提取高度/轮廓数据作为矩阵,然后将其作为texture map应用于您的圆柱体。
这可以按照以下方式完成
[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
答案 1 :(得分:0)
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使背景透明?