how to plot contour of 3D variable
12 ビュー (過去 30 日間)
古いコメントを表示
HI
I have issue with my data
I have salinity data with dimension (time,Lat,Lon) and I want to plot a filled 3-D contour
I want to plot salinity at specific
timestep 1:13
for example the size of variable
Lat=24*25;
Lon=24*25;
Salinty=744*24*25;
I am getting error becouse the X ,Y and Salinity had different size
I try for loop but it didn't worke
for i=1:12;
Sal(i,:,:)=Salinity(i,:,:);
figure
contourf(X,Y,Sal(i,:,:);
end
Can someone help?
0 件のコメント
採用された回答
Voss
2024 年 8 月 18 日
編集済み: Voss
2024 年 8 月 18 日
Example data:
Salinity = rand(744,24,25);
[Lat,Lon] = ndgrid(1:24,1:25);
whos Lat Lon Salinity
If you want a sequence of filled contours:
tmp = permute(Salinity,[2 3 1]);
whos tmp
for ii = 1:3 % first 3 times only
figure
contourf(Lon,Lat,tmp(:,:,ii));
end
Your code didn't work because Sal(i,:,:) is of size 1-by-24-by-25 but contourf expected a matrix of size 24-by-25.
In my suggested code, permute rearranges the dimensions of Salinity to make tmp, which is of size 24-by-25-by-744, so that each tmp(:,:,ii) is a matrix of size 24-by-25.
その他の回答 (1 件)
Walter Roberson
2024 年 8 月 17 日
In order to do 3D contours, you need to call isosurface . You would call it several times, once for each contour level.
However, filling the 3D contours is a bit of a problem.
I have to ask whether filling the contours is really necessary, as opposed to just drawing their surfaces? Since their entire surface would be drawn, the only visual difference between surface-only and surface-and-fill would be the visual effect of transparency -- showing darker locations where the view happens to strike more of the volume. That kind of visual hint is not without merits, but is it worth the trouble?
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Oceanography and Hydrology についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!