11 - matlab m_map地学绘图工具基础函数 - 绘制航迹、椭圆、风向玫瑰图和特定的圆形区域的有关函数及其用法
- 0. 引言
- 1. 关于m_track
- 2. 关于m_range_ring
- 3. 关于m_ellipse
- 4. 关于m_windrose
- 5. 结语
0. 引言
本篇介绍下m_map
中绘制航迹图函数(m_track
)、绘制特定半径的范围的函数(m_range_ring
)、绘制椭圆的函数(m_ellipse
)、绘制风玫瑰图的函数(m_windrose
)。
1. 关于m_track
m_track函数
用于在地图上绘制航迹。这个函数可以用来可视化航行路径或飞行路径等。航迹图上可以标注时间和日期。
m_track 函数
的一般形式为:
m_track(lon,lat,varargin)
其中:
lon 和 lat
:航迹点的经度和纬度坐标。varargin
:可选参数,控制航迹线的刻度样式、日期和时间标签样式。主要包括下面内容:
ticks
刻度间隔以分钟为单位,默认为60分;
times
时间标签间隔以分钟为单位,默认为240分钟;
dates
日期标签间隔以分钟为单位,默认为720分钟;
timef[ormat]
时间在刻度线上的显示样式;
datef[ormat]
日期在刻度线上的显示样式;
color
航迹线和标签颜色设置,默认为黑色;
linew[idth]
航迹线线宽设置;
lines[tyle]
航迹线线形设置;
fonts[ize]
标签字体尺寸设置;
fontn[ame]
标签字体设置;
clip
是否进行裁剪(on/off)
orien[t]
标签方向(true/upright)
示例(利用官网示例):
m_proj('UTM','long',[-72 -68],'lat',[40 44]);
m_gshhs_i('color','k');
m_grid('box','fancy','tickdir','in');
m_ruler(1.2,[.5 .8]);
% fake up a trackline
lons=[-71:.1:-67];
lats=60*cos((lons+115)*pi/180);
dates=datenum(1997,10,23,15,1:41,zeros(1,41));
m_track(lons,lats,dates,'ticks',0,'times',4,'dates',8,...
'clip','off','color','r','orient','upright');
m_northarrow(-68.5,43.4,.4,'type',2);
下图红色部分即为m_track
命令加载的内容,可以使用上面提到的属性进行绘图样式的调整;
2. 关于m_range_ring
m_range_ring 函数
用于在地图上绘制指定半径的范围圈。这在航海、航空和地理信息系统中很常见,用于表示某一点周围的特定半径范围。
m_range_ring 函数
的基本语法如下:
m_range_ring(lon, lat, radius, varargin)
其中,lon 和 lat
是范围的中心点投影坐标;radius
是范围的半径,以与地图坐标系统相匹配的距离单位(例如公里或海里)表示;varargin
可选参数,用于指定范围线条的样式、颜色等信息,不做展开,可以参照其他绘图命令;
官网示例:
%% 官网示例
close all;clc;clear;
m_proj('hammer','clong',170); % 定义投影
m_grid('xtick',[],'ytick',[],'linestyle','-'); % 不显示坐标轴
m_coast('patch','g'); % 陆地填充
m_line(100.5,13.5,'marker','square','color','r'); % 在当前坐标处绘制了一个红色矩形
m_range_ring(100.5,13.5,[1000:1000:15000],'color','b','linewi',2); % 以当前坐标为原点,半径间隔为1000绘制15个蓝色范围圈
xlabel('1000km range rings from Bangkok'); % 添加图示
自建示例:
%% 自建
close all;clc;clear;
m_proj('mercator', 'lon', [69.5 105.5], 'lat', [24.5 40.5]);
%
m_line(80.5,32.5,'marker','square','color','r'); % 在当前坐标处绘制了一个红色矩形
m_range_ring(80.5,32.5,[500],'color','b','linewi',2); % 以当前坐标为远点,向量值为半径绘制15个蓝色范围圈
%
m_gshhs('ic','color',[.5 .5 .5]) % 中等分辨率海岸线
m_gshhs('ir2','color','b') % 中等分辨率河流
m_grid('box','fancy','tickdir','in','gridlines','no','fontsize',12)
3. 关于m_ellipse
m_ellipse 函数
用于在地图上绘制椭圆。
m_ellipse函数
的一般形式为:
[h,varargout]=m_ellipse(long,lat,fmaj,fmin,finc,fpha,scale,type ,varargin)
其中,long和lat
为绘制椭圆的中心点经纬坐标;fmaj和fmin
为椭圆的半长轴/半短轴长度;finc和fpha
为椭圆倾角、相位角,以度为单位;scale
为比例因子;type
为类型用于设置线或填充;varargin
为可选参数,用于控制绘图边缘的颜色、宽度等属性,这里不做展示。
m_ellipse函数
示例如下:
clf;
m_proj('lambert','long',[-130 -121.5],'lat',[47 51.5],'rectbox','on');
m_grid('linewi',2,'linest','none','tickdir','out','fontsize',12);
[H]=m_ellipse(-125,49,20,10,30,30,200,'line');
[H]=m_ellipse(-125,49,30,10,80,90,200,'line','color','r','LineWidth',3,'LineStyle','--');
4. 关于m_windrose
m_windrose函数
用于绘制风向玫瑰图。风向玫瑰图通常用来显示风的方向和频率分布,适合气象学和地理学的应用。
m_windrose函数
的一般形式为:
N=m_windrose(long,lat,thet,spd,varargin)
其中,long,lat
为绘制风向玫瑰图的投影坐标;thet
为风向数据;spd
为风速数据;varargin
为可选参数,主要包括以下内容:
nspeeds
: 速度划分区间数量,默认值为[0:4:24];
ndirs
: 方向划分区间数量,默认是36个;
size
: 风向玫瑰图尺寸占背景图的长宽比例;
nrings
: 背景环数,标量或向量(默认值[2 4 6])。如果是标量,则设置为间隔2%的环数;
labelrings
: logical or angle;
barstyle
: 默认颜色和纹路;
alpha
: 风向玫瑰图的透明度(0到1,默认为0.4);
m_windrose函数
绘图示例,示例数据可从资源中获取:
clc;clear;
% 加载风速和风向
[data]=xlsread('wind data.xlsx');
clf;set(gcf,'color','w');
m_proj('lambert','lon',[77 82],'lat',[27 32] )
levels=[0:4:24]; % Binning for speeds
m_windrose({80},{30},{data(:,1)},{data(:,2)},...
'size',.17,'nspeed',levels,'alpha',1);
colormap(m_colmap('jet'));
caxis([0 24]);
m_grid
axb=m_contfbar(.8,[.6 .9],levels,levels);
axb.YLabel.String='Wind speeds m/s';
axb.YTick=levels;
5. 结语
本篇介绍了m_map
中绘制航迹图的函数(m_track
)、绘制特定半径范围的函数(m_range_ring
)、绘制椭圆的函数(m_ellipse
)、绘制风玫瑰图的函数(m_windrose
)通过示例展示了各函数的基本用法,对于绘制常见地学图已经够用了,后面若发现还有其它相关函数再进行补充。希望对绘图的你有所帮助
😜
😜😜
😜😜😜😜