主题:绘制多层图
我用GMT画过多层图,如下图。
我在想,Matlab能不能画呢?还真可以!如下图。其中,图1是用pcolor
画的,图2是用surf
画的。
对于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