Matlab M_map案例

摘要:Matlab借助M_map绘图

注:仅记录学习,如有侵权,联系删除。

  • 1、所写内容只是个人理解,如有错误,还请包涵
  • 2、所用主题为slandarer提供的墨滴模板
  • 3、CSDN:勉为其难免免
  • 4、微信公众号:飘散在人间的一缕青丝

一、安装M_map工具箱

点击链接,跳转到B站 学海洋的小翁

看视频,如果遇到错误,请先看评论区。

m_map官网地址,点击跳转

二、M_map示例绘图

点击Gallery,每个图都有对应的代码,可参考学习。

三、M_map基本使用

  • 1、投影方式确定
  • 2、海岸线
  • 3、增加网格
clc
clear
close all
%% step1:确定投影方式,指定经纬度
m_proj('miller');
%% step2:海岸线的画法
m_coast;
%% step3:增加网格 
m_grid;

上述代码不需要自己的数据,工具包自带了数据,为了给海洋和陆地做区分,可修改代码,对陆地上色。一般用这个画的是海图,所以m_coast的pacth是给陆地上色,而不是给海洋上色。

clc
clear
close all
%% step1:确定投影方式,指定经纬度
m_proj('miller');
%% step2:海岸线的画法
m_coast('patch',[.7,.7,.7]);%给陆地上色,一般使用灰色
%% step3:增加网格 
m_grid;

修改经纬度到指定区域,而不是全球。lon和lat指定范围

clc
clear
close all
%% step1:确定投影方式,指定经纬度
m_proj('miller','lon',[110,130],'lat',[20,40]);
%% step2:海岸线的画法
m_coast('patch',[.7,.7,.7]);%给陆地上色,一般使用灰色
%% step3:增加网格 
m_grid;

修改海岸线,用m_gshhs

clc
clear
close all
%% step1:确定投影方式,指定经纬度
m_proj('miller','lon',[110,130],'lat',[20,40]);
%% step2:海岸线的画法
% m_coast('patch',[.7,.7,.7]);%给陆地上色,一般使用灰色
m_gshhs_f('patch',[253, 246, 227]/255);
%% step3:增加网格 
m_grid;

%% map的投影和岸线以及表示
clear;close all;clc
% miller 米勒投影 矩形 Miller Cylindrical
% Lambert 扇形投影
% m_proj('set') 这个命令可以查询所有的投影方式
%% step1:确定投影方式,指定经纬度
m_proj('miller','lon',[120.7273024829,120.7345941598],'lat',[36.3259704966,36.3339341039])% 选择投影方式 其实就是地图展现形式
%% step2:海岸线的画法 m_coast 和m_gshhs两种方式 example.mlx里面有具体的使用说明
% m_coast('patch',[.7,.7,.7]);% patch属性  给陆地进行上色 海洋目前展示是白色的 因为画的是海图,还有没各种数据,所以现在上色是没意义的
m_gshhs_f('patch',[253, 246, 227]/255);% 用m_gshhs_f画海岸线 分辨率更高,注意和m_coast同时只能用一个 
% c、l、i、h、f 分别表示粗糙/低/中/高/满分辨率
%% step3:增加网格 
m_grid('box','fancy');% 增加网格  m_grid get 可以查看属性

四、M_map画温度场图,等温线,风速

示例数据下载网址,ERA5数据,数据如何下载不再赘述,大家都有自己的原始数据。(注:示例数据可在公众号获取)

https://cds.climate.copernicus.eu/datasets/reanalysis-era5-single-levels?tab=download

%% 画海表温度图
clear;close all;clc

%% 读取文件

%ncdisp 查看文件内容
filename="singlelevelsfrom1979.nc";
ncdisp("singlelevelsfrom1979.nc")
nlon=double(ncread(filename,'longitude'));%   读取经度变量
nlat=double(ncread(filename,'latitude')); %   读取纬度变量
t2m=double(ncread(filename,'t2m'));       %   温度
%% 数据预处理
t2m = t2m-273.15;
[mlat,mlon]=meshgrid(nlat,nlon);
%% 画图
m_proj('miller','lon',[105 118],'lat',[4 21]);%miller
m_pcolor(mlon,mlat,t2m);%用pcolor上色
m_gshhs_f('patch',[0.7,0.7,0.7]);%一般给陆地上灰色的 这个颜色可以随便改 可以先用m_coast 分辨率低一点话,能快点画图
m_grid('box','fancy')
colormap(spring)
colorbar

hold on
% m_contour(mlon,mlat,t2m,'k')                  % 继续画上等温线 默认的showtext是关闭的
% m_contour(mlon,mlat,t2m,'k','showtext','on')  % 继续画上等温线 打开showtext
% 显示指定的温度线
% V = [26 26];% 如果只有一个温度的话,那么是26 26 写两遍
V = [26 30];% 如果想指定多个温度的话,26 30即可
m_contour(mlon,mlat,t2m,V,'k','showtext','on')

%% ==================在上述温度场继续绘制风速
u10=double(ncread(filename,'u10'));       %   
v10=double(ncread(filename,'v10'));       %   
qh = m_quiver(mlon,mlat,u10,v10,2,'color','k');% 可以返回句柄 然后设置箭头的各种属性 2代表箭头的大小
qh.Marker = "o";
qh.MarkerSize = 1;

五、图形修饰

类似于plot,contourf,colorbar,colormap都可以返回句柄,然后查询都有什么属性,就可以设置各个属性进行图形修饰了。

%% 画经纬度网格线粗细以及经纬度字号大小设置
clear;close all;clc
%% 读取文件
%ncdisp 查看文件内容
filename="singlelevelsfrom1979.nc";
ncdisp("singlelevelsfrom1979.nc")
nlon=double(ncread(filename,'longitude'));%   读取经度变量
nlat=double(ncread(filename,'latitude')); %   读取纬度变量
t2m=double(ncread(filename,'t2m'));       %   温度
%% 数据预处理
t2m = t2m-273.15;
[mlat,mlon]=meshgrid(nlat,nlon);
%% 画图
m_proj('miller','lon',[105 118],'lat',[4 21]);%miller
[c,h] = m_contourf(mlon,mlat,t2m);%用pcolor上色
h.LevelList = 22:0.5:31;
h.LineStyle = 'none';
m_gshhs_f('patch',[0.7,0.7,0.7]);%一般给陆地上灰色的 这个颜色可以随便改 可以先用m_coast 分辨率低一点话,能快点画图
m_grid('fontname','timenewrom','box','fancy','fontsize',15, ...
    'linestyle','none','linewidth',2)%添加网格线
colormap(spring)
h_cbar = colorbar;
% h_cbar.Ticks = [20:5:30];

六、画轨迹、增加文字标注

%% 画轨迹
clear;close all;clc
%% 读取文件
%ncdisp 查看文件内容
filename="singlelevelsfrom1979.nc";
ncdisp("singlelevelsfrom1979.nc")
nlon=double(ncread(filename,'longitude'));%   读取经度变量
nlat=double(ncread(filename,'latitude')); %   读取纬度变量
t2m=double(ncread(filename,'t2m'));       %   温度
%% 数据预处理
t2m = t2m-273.15;
[mlat,mlon]=meshgrid(nlat,nlon);
%% 画图
m_proj('miller','lon',[105 118],'lat',[4 21]);%miller
[c,h] = m_contourf(mlon,mlat,t2m);%用pcolor上色
h.LevelList = 22:0.5:31;
h.LineStyle = 'none';
m_gshhs_f('patch',[0.7,0.7,0.7]);%一般给陆地上灰色的 这个颜色可以随便改 可以先用m_coast 分辨率低一点话,能快点画图
m_grid('fontname','timenewrom','box','fancy','fontsize',15, ...
    'linestyle','none','linewidth',2)%添加网格线
colormap(spring)
h_cbar = colorbar;
% h_cbar.Ticks = [20:5:30];
%% 画轨迹线
lon2 = [110,111,112,113];
lat2 = [17,18,19,20];
m_line(lon2,lat2,'marker','o','markersize',5,....
    'color',[16, 124, 65]/255,'linewidth',2,'MarkerEdgeColor','k','MarkerFaceColor','r')
m_text(lon2(1),lat2(1),' 勉为其难免免')

七、不同的colormap

othercolor

使用方法,输入名字;或者输入名字,个数

colormap(othercolor(‘BuDRd_12’))
colormap(othercolor(‘BuDRd_12’,18))

slandarer公众号

othercolor的一些颜色案例




八、下载链接

  公众号:飘散在人间的一缕青丝

  后台回复:map案例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勉为其难免免

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值