matlab绘制世界地图(含国界)、中国地图(含省界),可下载m_map和shp文件
本人习惯用matlab绘制图像,matlab本身自带的mapping绘制世界地图的函数不是很好用,相比之下,下载m_map安装包进行绘图更加方便,故将一些安装包和代码记录如下,也方便有需要的人查看,如果对你有帮助的话,请点一个赞哟~
1.m_map安装包下载和官方网址
(1)m_map官方网址
m_map的官方网址是 https://www.eoas.ubc.ca/~rich/map.html#examples,里面涉及的绘图命令很全面,如果想要画什么图,但不知道命令,可以去官网找有对应特征的图,查看相应命令。
(2)m_map安装包
安装包下载网盘链接:https://pan.baidu.com/s/1wbfwQ8tsDShhdzuseVmINw
提取码:3j6i
成功下载m_map安装包后,需要将安装包导入matlab中,步骤如下:
-
复制m_map安装包 ->>找到某盘下的Program Files文件夹(一般是C盘)->>找到其中的MATLAB文件夹->>找到R2016a文件夹(不同matlab版本对应的文件夹命名稍有区别,比如R2017b等)->>找到其下的toolbox文件夹->>将m_map文件夹粘贴到toolbox文件夹中
-
打开matlab,在菜单栏的主页中找到“设置路径”->>点击设置路径,弹出选项框后,点击“添加文件夹”->>找到toolbox文件夹下的m_map文件夹,选择此文件夹->>这时候会看到弹出框的matlab搜索路径中出现了m_map这一个路径->>点击保存,然后关闭->>在matlab命令框中输入 help m_map,如果出来一长串m_map的解释文件,而非报错,则说明m_map安装成功~~
图1 安装m_map文件夹
图2 设置路径
2.绘制世界地图(包含国界和不含国界)
(1)不包含国界
代码如下:
figure(1)
[Lon1,Lat1]=meshgrid(mmrbc_BCC_ESM1_lon,mmrbc_BCC_ESM1_lat);%前面变量的经纬度
m_proj('miller','lat',[-80 80]);%不写lon的时候,大西洋位于图像中间;写lon的时候,太平洋位于图像中间
m_pcolor(Lon1,Lat1,bc_BCC_ESM1');
shading interp;
colormap(Colormap_white2blue2red20);%自己定义的colormap
hh = colorbar('horiz');
hh.Ticks = [0:0.5:5];%给colorbar划分刻度区间
xlabel(colorbar('horiz'),'\mug/m^{2}','Fontsize',18);%将colorbar横过来
caxis([0 5]);
title('BCC-ESM1 Surface BC_1950-2014','fontsize',20,'interpreter','none');
m_coast('linewidth',1.5,'color',[.4 .4 .4]);%绘制海岸线
m_grid('linestyle','none');
绘制的图像(colorbar的文字说明和上面代码稍有不同)
(2)包含国界
世界国界链接: https://pan.baidu.com/s/1fOLOYCiRfcydt11itZMK6A
提取码:nfkl
代码如下:
World = shaperead('E:\4.Matlab\shp\world map china line\world map china line.shp');
wx = [World(:).X];wy = [World(:).Y];%读取世界地图的shp文件
figure(1)
[Lon1,Lat1]=meshgrid(mmrbc_BCC_ESM1_lon,mmrbc_BCC_ESM1_lat);
m_proj('miller','lat',[-80 80]);
m_pcolor(Lon1,Lat1,conbc_BCC_ESM1');%绘制conbc_BCC_ESM1变量的填色图
hold on;
m_plot(wx,wy,'k','linewidth',1.5,'color',[0 0 0]);%绘制国界
shading interp;
colormap(Colormap_white2blue2red20);%自己定义的colormap
m_grid('linestyle','none');
title('BCC-ESM1_BC','fontsize',20,'interpreter','none');
caxis([0 50]);
hh = colorbar;
hh.Ticks = [0:10:50];
ylabel(colorbar,'\mug/m^{3}','Fontsize',18);%对colorbar说明
绘制的图像(包含国界)
3.绘制中国地图(包含省界)
中国省界链接:https://pan.baidu.com/s/1fr4wGyLwJ__7v0ztmBk93g
提取码:7vdd
代码如下:
%中国省界线文件(含九段线)
ChinaL=shaperead('E:\4.Matlab\shp\全国省级、地市级、县市级行政区划shp\全国省级、地市级、县市级行政区划shp\bou2_4l.shp');
%中国面文件
ChinaP=shaperead('E:\4.Matlab\shp\全国省级、地市级、县市级行政区划shp\全国省级、地市级、县市级行政区划shp\bou2_4p.shp');
bou2_4lx=[ChinaL(:).X];
bou2_4ly=[ChinaL(:).Y];
bou2_4px=[ChinaP(:).X];
bou2_4py=[ChinaP(:).Y];
figure(1)
m_proj('miller','lon',[70,140],'lat',[0,60]);
m_pcolor(Lon,Lat,A1);
hold on;
m_plot(bou2_4lx,bou2_4ly,'k','linewidth',1.5);%绘制中国省界
hold on;
m_plot(wx,wy,'k','linewidth',1.5,'color',[0 0 0]);%绘制中国以外的国家,有国界
shading interp;
colormap(CM_bl2ye2re(2:end-1,:));%自己定义的colormap
m_grid('linestyle','none');
%m_coast('linewidth',1.5,'color',[.4 .4 .4]);%绘制中国以外的国家,没有国界
title('PM2.5_China_2001','fontsize',15,'interpreter','none');
axes('position',[.7,.12,.2,.80]);%设置colorbar的位置
axis off
caxis([0 120]);
colorbar('ticks',[0:20:120]);
绘制的图像(包含省界、国界)
未经允许不得转载,如果对你有帮助的话,点个赞吧~~