[英]2D contour plot on 3D surface
我有一個2D輪廓圖,我想放在圓柱上。 這意味着我的2D圖的一個方向是軸向(z),另一個方向是方位角(phi)(在輻射中)。 對於半徑,我想使用0.5的值。
對於phi,z和要繪制的數據,我具有3D數據:
我首先將其轉換為2D數組:
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使背景透明?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.