07 - matlab m_map地学绘图工具基础函数 - 绘制等高线
- 0. 引言
- 1. 关于绘制m_contour
- 2. 关于绘制m_contourf
- 3. 关于绘制m_elev
- 4. 结语
0. 引言
本篇介绍下m_map
中添加绘制等高线的一系列函数及其用法,主要函数包括m_elev
、m_contour
、m_contourf
还有一些函数也和绘制等高线有关(如:m_tbase、m_etopo2),但没有合适的数据,未完成调用测试,所以不进行展开。
1. 关于绘制m_contour
m_contour 函数
用于在地图投影上绘制等值线图。等值线图是一种常用的展示地理数据的方法,通过连接相同数值的点来展示数据的变化趋势。使用m_contour函数
可以在地图上直观地显示这些等值线,并帮助分析地理数据的特征。
m_contour 函数
的一般调用形式:
[cs,h]=m_contour(long,lat,data,varargin)
其中,long,lat
为绘制数据的一系列经纬度坐标,data
为高度起伏数据,long,lat和data
都是矩阵形式,且行列必须一致,long,lat和data
可以理解为投影区域的一系列3维点,m_contour
是将相同或相近起伏的点进行连接的过程;varargin
为可选参数,控制绘制的等高线的样式,如linecolor
线的颜色、linewidth
线宽、edgecolor
边缘颜色等;返回的cs
存储等高线矩阵,h
包含了绘制等高线的一些其它参数,cs和h
如果没用,可以省略输出。
示例: 示例中使用的外部数据是全球的GLDAS水文模型,绘制了下图区域的水文等高线图。测试数据在网盘中,提取码为n67r。
clc;clear;
ncFilePath = 'GLDAS_NOAH10_M.A200602.021.nc4';
lon = ncread(ncFilePath,'lon');
lat = ncread(ncFilePath,'lat');
soilmoi_data = ncread(ncFilePath,'SoilMoi0_10cm_inst');
[LN,LT]=meshgrid(lon,lat);
figure;
m_proj('mercator','lon',[0 105.5],'lat',[0 60]);
% 绘制填充的等值线图
[cs,h] = m_contour(LN,LT, soilmoi_data', 'linecolor', 'r', 'linewidth', 1);
%m_contour(LN,LT, soilmoi_data','edgecolor','r','facecolor','g');
% 添加地图边界和海岸线
m_coast('line', 'color', 'k');
m_grid('linestyle', 'none', 'box', 'fancy');
% 添加颜色条
colorbar;
2. 关于绘制m_contourf
m_contourf函数
用于在地图上绘制填充等值线图。它与Matlab
自带的contourf函数
相似,差异是m_contourf
在制图中应用,能够基于投影直接绘制地理图件。
m_contourf
的一般形式:
[cs,h]=m_contourf(long,lat,data,varargin)
其调用形式和m_contour
基本一致,差异在varargin中部分属性是控制填充的,这个是m_contour
中没有的。
示例如下:测试数据在网盘中,提取码为n67r。
clc;clear;
ncFilePath = 'GLDAS_NOAH10_M.A200602.021.nc4';
lon = ncread(ncFilePath,'lon');
lat = ncread(ncFilePath,'lat');
soilmoi_data = ncread(ncFilePath,'SoilMoi0_10cm_inst');
[LN,LT]=meshgrid(lon,lat);
figure;
m_proj('mercator','lon',[0 105.5],'lat',[0 60]);
% 绘制填充的等值线图
[CS,CH] = m_contourf(LN,LT, soilmoi_data');
% 添加地图边界和海岸线
m_coast('line', 'color', 'k');
m_grid('linestyle', 'none', 'box', 'fancy');
% 添加颜色条
colorbar;
3. 关于绘制m_elev
m_elev函数
可以利用1°高程数据集绘制多种类型的地图,上面提到m_contour
(绘制等高线) 和m_contourf
(填充等高线)两个函数都可以看作是 m_elev函数
功能的一部分。
m_elev函数
有多种调用形式,主要形式如下:
一般形式1:
[ELEV,LONG,LAT]=M_ELEV([LONG_MIN LONG_MAX LAT_MIN LAT_MAX])
形式1输入绘图区域经纬度四至即 [最小经度 最大经度 最小维度 最大维度]
,返回四至区域高程数据格点,分辨率为1°;
示例: 形式1的调用主要用于提取研究范围的高程数据,并不会绘制等高线,下面两图为有等高线和没等高线的对比:
m_proj('mercator','long',[-160 -40],'lat',[30 80]);
m_coast('patch',[1 .85 .7]);
%m_elev('contourf',[500:500:6000]);
% 提取范围内高程数据
[ele,lon,lat] = m_elev([-160 -100 30 60]);
m_grid('box','fancy','tickdir','in');
colormap(flipud(copper));
|
|
一般形式2:
M_ELEV(OPTN,args,...)
第二种调用形式,OPTN
参数为功能选择参数,可以选择绘制等高线(contour
)图、等高线填充(contourf
)图、pcolor
图、栅格图像(image
)和阴影(shadedrelief
)图共5种类型的地图; args
表示其他可选项,可以控制绘图的线条样式、颜色等属性:
% OPTN: 'contour' - contour lines are drawn.
% 'contourf' - filled contours are drawn.
% LEVELS are the levels used, and ARGS
% are optional patch arguments of line types,
% colors, etc.
% 'pcolor' - pcolor call
% 'image' - displays pixellated image 展示栅格图像
% 'shadedrelief' - shaded relief map. 阴影地形图
下面示例,包含了上述五种类型的有关命令,并展示了五种图的图示:
m_proj('mercator','long',[-160 -40],'lat',[30 80]);
m_coast('patch',[1 .85 .7]);
% 一般形式1
%[ELEV,LONG,LAT]=m_elev([-100 -40 50 80]);
% 一般形式2
%m_elev('contourf',[500:500:6000]); % 绘制等高线
%m_elev('contour',[500:500:6000]); % 绘制等高线填充
%m_elev('image');
m_elev('shadedrelief','gradient',.5);
%m_elev('pcolor')
m_grid('box','fancy','tickdir','in');
colormap(flipud(copper));
|
|
|
|
4. 结语
本篇介绍了m_map
中绘制等高线的几个方法,通过示例展示了各函数的基本用法,对于绘制常见地学图已经够用了,后面若发现还有其他和绘制等高线有关的函数再进行补充。希望对绘图的你有所帮助
😜
😜😜
😜😜😜😜