簡體   English   中英

3D表面上的2D等高線圖

[英]2D contour plot on 3D surface

我有一個2D輪廓圖,我想放在圓柱上。 這意味着我的2D圖的一個方向是軸向(z),另一個方向是方位角(phi)(在輻射中)。 對於半徑,我想使用0.5的值。

對於phi,z和要繪制的數據,我具有3D數據:

  • 第一維:z方向
  • 二維:phi方向
  • 第三維:r維度

我首先將其轉換為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM