一般而言,matlab绘制地理底图需要额外添加工具包,本文中使用的代码需要提前安装好 m_map工具包。本例将以非洲维多利亚湖泊为例,绘制水储量的时间变化,并在原图中插入子图,添加箭头。
h1=axes('Position',[0.1 0.1 0.8 0.8])
plot(jgc_tt2(1:163),CSR_rg2(1:163),'*--','color',[0.8 0.5 0.9],'LineWidth',1)
hold on
plot(jgc_tt2(164:207),CSR_rg2(164:207),'*--','color',[0.8 0.1 0.9],'LineWidth',1)
plot(jgc_tt_0(1:163),CSR_rg_0(1:163),'+--','color',[0.2 0.5 0.9],'LineWidth',1)
plot(jgc_tt_fo,CSR_rg_fo,'+--','color',[0.2 0.1 0.9],'LineWidth',1)
x1 = [2.017441095890411e+03,2.018456164383562e+03];
x2 = [2.017441095890411e+03,2.018456164383562e+03];
y1 = [-40,-40];
y2 = [60,60];
hold on
[h,xx,yy]=fill_line(x1,y1,x2,y2)
xlim([2002,2022.5])
ylim([-20,60])
grid on
set(gca, 'GridLineStyle', ':'); % 设置为虚线
dimen = [0.27 .75 .11 -.15];
a = annotation('arrow','Position',dimen)
tex = text(2009.3,54,'Lake Victoria','FontSize',14,'Color','r')
xlabel('Year')
ylabel('EWH/cm')
ax2=axes('Position',[0.1 0.58 0.3 0.3])
lon=[-180:180];
lat=atan(tan(60*pi/180)*cos((lon-30)*pi/180))*180/pi;
m_proj('ortho','lat',-10','long',20');
m_coast('patch','y');
m_grid('linest','-','xticklabels',[],'yticklabels',[]);
ax2=axes('Position',[0.38 0.6 0.2 0.2])
lake = load('lake.txt');
plot(lake(:,1),lake(:,2))
xlim([25,40])
ylim([-10,8])
grid on
set(gca, 'GridLineStyle', ':'); % 设置为虚线
其中的fill_line为填充函数:
function [h,xx,yy]=fill_line(x1,y1,x2,y2)
x1=x1(:);
y1=y1(:);
x2=x2(:);
y2=y2(:);
xx=[x1;x2(end:-1:1)];
yy=[y1;y2(end:-1:1)];
h=fill(xx,yy,'b','FaceAlpha',0.3);
set(h,'FaceColor','r','edgecolor',[1,1,1])
结果如下图所示