Matlab-多层图

主题:绘制多层图

我用GMT画过多层图,如下图。

Matlab-多层图_第1张图片

我在想,Matlab能不能画呢?还真可以!如下图。其中,图1是用pcolor画的,图2是用surf画的。

Matlab-多层图_第2张图片

对于pcolor,它默认在z=0处画图,因此,我们需要改变ZData!其他细节请help!

z.ZData=ones(size(TEC))*1;

对于surf,语法是surf(X,Y,Z,C),分别把X,Y,Z设为全是同一个数的矩阵就可以了,细节请看代码!

完整代码:

clear;clc;
%% 加载数据
ncfile='00.nc';
lon=ncread(ncfile,'lon');
lat=ncread(ncfile,'lat');
[LON,LAT]=meshgrid(lon,lat);
TEC=ncread(ncfile,'TEC');
TEC=TEC';

%% 画图1
figure;
hold on
box on
% 曲面1-1
z=pcolor(LON,LAT,TEC);
z.ZData=ones(size(TEC))*0;
shading interp;
view(3)
% 曲面1-2
z=pcolor(LON,LAT,TEC);
z.ZData=ones(size(TEC))*1;
shading interp;
colormap(jet);
view(3)
hold off

%% 画图2
% 曲面2-1
figure;
hold on 
box on
surf(LON,LAT,ones(71,73)*100,TEC);
surf(LON,LAT,ones(71,73)*200,TEC);
surf(LON,LAT,ones(71,73)*300,TEC);

surf(ones(71,73)*-100,LON,LAT+400,TEC);
surf(ones(71,73)*0,LON,LAT+400,TEC);
surf(ones(71,73)*100,LON,LAT+400,TEC);

surf(LON,ones(71,73)*-100,LAT+600,TEC);
surf(LON,ones(71,73)*0,LAT+600,TEC);
surf(LON,ones(71,73)*100,LAT+600,TEC);
xlabel('X');
ylabel('Y');
xlim([-180,180]);
ylim([-180,180]);
colormap(jet);
shading interp;
view(3)
hold off

你可能感兴趣的