10 - matlab m_map地学绘图工具基础函数 - 绘制多边形区域、流线图、散点图和添加注释的有关函数

news2024/12/26 7:45:06

10 - matlab m_map地学绘图工具基础函数 - 绘制多边形区域、流线图、散点图和添加注释的有关函数

  • 0. 引言
  • 1. 关于m_patch
  • 2. 关于m_streamline
  • 3. 关于m_scatter
  • 4. 关于m_annotation
  • 5. 结语


0. 引言

   本篇介绍下m_map绘制多边形区域函数(m_patch)、绘制流线图函数(m_streamline)、绘制散点图函数(m_scatter)、添加注释函数(m_annotation),其中添加注释的函数用的较多。

1. 关于m_patch

  m_patch函数可以用于绘制多边形区域,并可以使用命令对绘制的图形进行填充,如颜色、透明度等。

  m_patch函数的一般形式如下:

m_patch(lat, lon, cdata, varargin)

  其中,lat 和 lon 是多边形各顶点的经维度坐标,以向量形式给出;cdata 是用于填充多边形的数据,可以是一个标量值或者一个与顶点数相同的向量varargin为可选参数用于设置填充区域的样式、边界等属性,如 EdgeColorFaceAlphaLineStyle等。

  下面是一个m_patch函数的简单的示例,在前面介绍m_coast函数的时候,介绍过对边界填充,输入的参数为“patch”,其本质是在调用m_patch函数为海岸线内填充颜色:

%% 示例2
figure(2)
m_proj('miller', 'lat', [-90 90], 'long', [-180 180]);

lat = [-90 0 90 0]; % 纬度
lon = [0 -100 0 100]; % 经度
cdata = 1;

% 绘制并填充多边形区域
m_patch(lon,lat,'red','FaceColor','green','edgecolor','red','linewidth',2);

m_grid('box','fancy','tickdir','in');
colormap(flipud(copper));

2. 关于m_streamline

  m_streamline 函数用于在地图上绘制流线。流线指示流体运动方向的线条,通常用于可视化气象、海洋流动、风场等方向场的数据

  m_streamline函数一般形式如下:

m_streamline(lon, lat, u, v, varargin)
  • lonlat 是流场数据的经度纬度坐标网格;
  • uv 是经度和纬度方向上的流场速度分量网格;
  • varargin表示还有其他可选参数,如arrowsmode表示是否绘制方向向量的朝向箭头默认是绘制的,可以使用noarrowsmode参数使箭头不绘制method可以选择使用特定的插值方法,可以选择插值方法有线形插值(linear)、样条插值(Cubic)和最近邻插值(nearest);

  下面示例模拟了一个场数据进行流线图的绘制:

figure;
m_proj('miller', 'lon', [69.5 105.5], 'lat', [24.5 40.5]);
% 在地图上绘制海岸线
m_coast('color', 'k');
colormap([m_colmap('land')])
m_etopo2('shadedrelief','lightangle',45);
% 生成一些模拟的经纬度数据
lon = 69.5:0.2:105.5;
lat = 24.5:0.2:40.5;
[lon_grid, lat_grid] = meshgrid(lon, lat);
% 生成一些模拟的流场数据,例如风场
u = cosd(lat_grid) .* cosd(lon_grid);
v = sind(lon_grid);
% 绘制流线图
m_streamline(lon_grid, lat_grid, u, v,'arrowsmode');
%m_streamline(lon_grid, lat_grid, u, v,'noarrowsmode','nearest');
% 添加标题和标签
title('流线图示例');
xlabel('经度');
ylabel('纬度');
m_grid

3. 关于m_scatter

  m_scatter函数用于在地图上绘制散点,即在地图上显示具有特定经纬度坐标的点。

h = m_scatter(long,lat,varargin)

  其中,long,lat 表示绘制散点的投影坐标向量;varargin可选参数,设置散点的颜色、轮廓、填充、线宽等属性m_scatter函数在底层调用了matlab的scatter函数,所以可选参数大多和scatter函数的一致

  m_scatter函数绘图示例,通过填充、控制点的形状、控制点轮廓线宽等参数修改了散点的样式

clf;
m_proj('lambert','long',[-130 -121.5],'lat',[47 51.5],'rectbox','on');

lon = [-121.98, -122.40, -126.62];
lat = [48.78, 49.77, 50.88];
sizes = [10, 20, 15]; % 指定每个点的大小
%m_scatter(lon, lat, sizes, 'Marker', 'o', 'Color', 'r') % 使用红色圆圈绘制散点图
m_scatter(lon, lat, sizes,'filled','Marker', 'o','LineWidth',2,'MarkerEdgeColor','r') % 使用红色圆圈绘制散点图
m_grid('linewi',2,'linest','none','tickdir','out','fontsize',12);

4. 关于m_annotation

  m_annotation函数用于在地图上添加注释。这个函数可以用来在地图上标记特定的地理位置、添加文本说明、绘制箭头等

  m_annotation函数一般形式如下:

h = m_annotation(varargin)

  其中,varargin表示所有参数均为可选参数。特定位置可以添加的图形样式如下:

  • 'rectangle' 绘制矩形区域,m_annotation(‘rectangle’,lon_left, lat_botton, width, height) , lon_left, lat_botton表示绘图区域从左下开始,输入坐下位置的坐标点,width, height表示绘制的矩形的长宽值;

  • 'ellipse'绘制椭圆区域, m_annotation(‘ellipse’,lon_left, lat_botton, width, height) ,,lon_left, lat_botton表示绘图区域从左下开始,输入坐下位置的坐标点,width, height表示绘制的椭圆的长短半轴长;

  • 'textbox' 绘制文本框, m_annotation(‘textbox’,lon_left, lat_botton, width, height) ,lon_left, lat_botton表示绘图区域从左下开始,输入坐下位置的坐标点,width, height表示绘制的文本框的长宽;

  • 'line' 绘制线,m_annotation(‘line’,lon,lat),其中lon,lat为投影坐标下的经纬度向量;

  • 'arrow' 绘制箭头,m_annotation(‘arrow’,lon,lat),其中lon,lat向量长度为2,表示绘制箭头的起止坐标;

  • 'doublearrow' 绘制双向箭头,m_annotation(‘doublearrow’,lon,lat),其中lon,lat向量长度为2,表示在两个坐标的位置绘制箭头;

  • 'textarrow' 绘制箭头并在尾端添加注释,m_annotation(‘textarrow’,lon,lat),其中lon,lat向量长度为2,表示绘制箭头的坐标和添加注释的坐标;

  下面是一个示例,包含了上面提到的所有注释样式的使用方法:

close all;clc;clear;
m_proj('mercator', 'lon', [69.5 105.5], 'lat', [24.5 40.5]);

%% 
h = m_annotation('arrow',[80.5,82.5],[34.5,32.5],'Color','r'); % 绘制两个坐标的箭头(投影坐标系)
h = m_annotation('line',[80.5,78.5],[34.5,30.5],'Color','g'); % 绘制两个坐标的直线(投影坐标系)
h = m_annotation('doublearrow',[80.5,78.5],[34.5,30.5],'Color','c'); % 绘制两个箭头的连线(投影坐标系)

th=annotation('textarrow',[0.3,0.6],[0.7,0.4],'String','ABC'); % 绘制箭头并在尾端注释(要求输入坐标归一化)
str = {'使用FitBoxToText属性','使文字紧贴边框'};
th=annotation('textbox',[0.6,0.35,0.3,0.3],'Color','r','String',str,'FontWeight','bold','FitBoxToText','on'); %  [x y w h] 形式的四元素向量。前两个元素指定文本框、矩形或椭圆的左下角相对于图窗左下角的坐标。后两个元素分别指定注释的宽度和高度。
th=annotation('textbox',[0.6,0.3,0.2,0.2],'Color','r','String',{'不使用','FitBoxToText属性'},'FontWeight','bold');
th=annotation('rectangle',[0.2,0.4,0.1,0.2],'Color','#7E2F8E'); % 绘制矩形区域
th=annotation('ellipse',[0.2,0.2,0.4,0.1],'Color','#A2142F'); % 绘制椭圆区域
%
m_gshhs('ic','color',[.5 .5 .5]) % 中等分辨率海岸线
m_gshhs('ir2','color','b')   % 中等分辨率河流
m_grid('box','fancy','tickdir','in','gridlines','no','fontsize',12)

5. 结语

   本篇介绍了m_map绘制多边形区域m_patch)、绘制流线图m_streamline)、绘制散点图m_scatter)、添加注释m_annotation)的有关函数,通过示例展示了各函数的本用,对于绘制常见地学图已经够用了,后面若发现还有其它相关/相似函数再进行补充希望对绘图的你有所帮助






😜
😜😜
😜😜😜😜

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1891096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Landsat数据从Collection1更改为Collection2

目录 问题解决 问题 需要注意!您使用的是废弃的陆地卫星数据集。为确保功能持续,请在2024年7月1日前更新。 在使用一些以前的代码时会遇到报错,因为代码里面用的是老的数据集 解决 对于地表反射率SR,需要在name中,将C01换为C02&…

Mysql-基础-DDL操作

1、数据库操作 查询 查询所有数据库 show databases; 创建 创建数据库 create database [if not exists] 数据库名 使用及查询 use 数据库名 select database() 查询当前所处数据库 删除 drop database [if not exists] 数据库名 2、表操作 查询当前库中的所…

SpringBoot源码阅读3-启动原理

SpringBootApplication public class DistApplication {public static void main(String[] args) {// 启动入口SpringApplication.run()SpringApplication.run(DistApplication.class, args);} }1、服务构建 这里"服务"指的是SpringApplication对象,服务…

安防视频监控/视频汇聚EasyCVR平台国标GB28181级联上级平台,视频无法播放是什么原因?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可提供7*24小时实时高清视频监控、云端录像、云存储、录像检索与回看、智能告警…

24位DAC转换的FPGA设计及将其封装成自定义IP核的方法

在vivado设计中,为了方便的使用Block Desgin进行设计,可以使用vivado软件把自己编写的代码封装成IP核,封装后的IP核和原来的代码具有相同的功能。本文以实现24位DA转换(含并串转换,使用的数模转换器为CL4660)为例,介绍VIVADO封装IP核的方法及调用方法,以及DAC转换的详细…

【postgreessql 】统计库中的所有表数量

在PostgreSQL中,你可以使用SQL查询来统计数据库中的所有表数量。这通常涉及到查询系统目录表,特别是 pg_catalog.pg_tables 表,它存储了关于数据库中所有表的信息。 SELECT COUNT(*) FROM information_schema.tables WHERE table_schema IN …

游戏冻结工具 -- 雪藏HsFreezer v1.78

软件简介 HsFreezer是一款多功能游戏冻结工具,它允许用户随意暂停和继续游戏,同时具备系统优化和进程管理的功能。这款软件特别适合希望在游戏加载时间节省或在游戏与其他任务之间快速切换的用户。其主要特点包括快捷键操作、单锁模式的丝滑切换&#x…

【大数据】StarRocks的系统架构

StarRocks 架构简洁,整个系统的核心只有 FE(Frontend)、BE (Backend) 或 CN (Compute Node) 两类进程,方便部署与维护,节点可以在线水平扩展,元数据和业务数据都有副本机制,确保整个系统无单点。…

数据大小端问题

文章目录 大小端前言函数引用(接下来使用此函数对高低位进行切换)先看截取的对于大小端的定义大小端数据的直观理解[重点] 对uchar数组进行取操作定义一个uint8_t的数组观察起内部内存尝试使用uint32_t 每次区 1、2、3、4byte数据 提升经过上面的介绍一定对大小端有了一定的了解…

桥梁监测系统:守护桥梁结构安全的科技利器

桥梁是城市交通的重要组成部分,然而,长期以来,桥梁结构的健康问题一直是人们关注的焦点。传统的人工巡检方式无法全面准确地掌握桥梁结构的实时状况,因此,桥梁监测系统应运而生。桥梁监测系统是一种基于传感器、信息处…

数据结构 - C/C++ - 树

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 树的概念 结构特性 树的样式 树的存储 树的遍历 节点增删 二叉搜索树 平衡二叉树 树的概念 二叉树是树形结构,是一种非线性结构。 非线性结构:在二叉树中&#x…

<电力行业> - 《第15课:电力领域(一)》

1 电网 发电厂与最终用电用户(负荷)往往相距很远,因此电力需要由电厂”输送“到最终用户,即“输电环节“,电流的输送往往导致因线路发热造成损耗,所以在输送的时候都是通过变电升高电压,让电流…

C语言刷题小记

前言 本篇博客和大家分享一些C语言的OJ题目,希望大家可以通过这些题目进一步提升自己的编程能力,如果你对本篇内容感兴趣,可以一键三连,多多关注,下面进入正文部分。 题目1 十六进制转十进制 描述 BoBo写了一个十六…

66.Python-web框架-Django-免费模板django-datta-able的分页的一种方式

目录 1.方案介绍 1.1实现效果 1.2django.core.paginator Paginator 类: Page 类: EmptyPage 和 PageNotAnInteger 异常: 1.3 templatetags 2.方案步骤 2.1创建一个common app 2.2创建plugins/_pagination.html 2.3 其他app的views.py查询方法 2.4在AIRecords.html里…

springboot旅游管理系统-计算机毕业设计源码16021

摘 要 本文旨在设计和实现一个基于Spring Boot框架的旅游管理系统。该系统通过利用Spring Boot的快速开发特性和丰富的生态系统,提供了一个高效、可靠和灵活的解决方案。系统将实现旅游景点信息的管理、线路规划、跟团游玩、旅游攻略、酒店信息管理、订单管理和用户…

html+css+js文章模板

图片 源代码在图片后面&#xff0c;点赞加关注&#xff0c;谢谢&#x1f604; 源代码 <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width,…

JSP实现简单的登录和注册

JSP实现登录和注册&#xff08;Map集合模拟数据库&#xff09; 1、login.jsp2、 loginSelect.jsp3、register.jsp4、 RegisterSelect.jsp5、 index.jsp 1、login.jsp login.jsp中username和password在LoginSelect.jsp验证是否一致使用session.setAttribute("login_msg&quo…

Android Studio初学者实例:ContentProvider读取手机通讯录

该实验是通过ContentProvider读取手机通讯录 知识点包含了RecyclerView控件、UriMatcher、ContentResolver 先看效果&#xff0c;显示手机通讯录 首先是界面的布局代码 activity_main59.xml <?xml version"1.0" encoding"utf-8"?> <LinearL…

[译]Reactjs性能篇

英文有限&#xff0c;技术一般&#xff0c;海涵海涵&#xff0c;由于不是翻译出身&#xff0c;所以存在大量的瞎胡乱翻译的情况&#xff0c;信不过我的&#xff0c;请看原文&#xff5e;&#xff5e; 原文地址&#xff1a;https://facebook.github.io/react/docs/advanced-per…

不同操作系统下的换行符

1. 关键字2. 换行符的比较3. ASCII码4. 修改换行符 4.1. VSCode 5. 参考文档 1. 关键字 CR LF CRLF 换行符 2. 换行符的比较 英文全称英文缩写中文含义转义字符ASCII码值操作系统Carriage ReturnCR回车\r13MacIntosh&#xff08;早期的Mac&#xff09;LinefeedLF换行/新行\…