gma 地理空间绘图:(1) 绘制简单的世界地图-3.设置地图框
内容回顾
gma 地理空间绘图:(1) 绘制简单的世界地图-1.地图绘制与细节调整
gma 地理空间绘图:(1) 绘制简单的世界地图-2.设置经纬网
方法
SetFrame(FrameColor = ‘black’, FrameWidth = 0.6, ShowFrame = True, ShowLeft = True, ShowBottom = True, ShowRight = True, ShowTop = True, TickColor = ‘black’, TickLength = 0.01, TickWidth = 0.4, LabelTickPad = 0.005, Precision = 0, Uint = ‘D’, UseWESN = True, LabelFont = None, LabelFontSize = 5, LabelFontPROP = {}, LabelColor = ‘black’)
功能: 【设置地图框】。配置地图框的边框、标签和刻度。
可选参数:
FrameColor = str||tuple||None
。边框颜色。如果为 None,则生成随机颜色。详见:matplotlib。
FrameWidth = float
。边框线宽。默认 0.6。
以下参数在添加了经纬网(AddGridLines)之后才会生效。
ShowLeft = bool
。是否显示左侧经纬网标签和刻度线。 默认显示(True)。
ShowBottom = bool
。是否显示底部经纬网标签和刻度线。 默认显示(True)。
ShowRight = bool
。是否显示右侧经纬网标签和刻度线。 默认显示(True)。
ShowTop = bool
。是否显示顶部经纬网标签和刻度线。 默认显示(True)。
TickColor = str||tuplt||None
。刻度线颜色。如果为 None,则生成随机颜色。详见:matplotlib。
TickLength = float
。刻度线的相对长度。为相对于地图框 X 方向长度的倍数。默认 0.01 倍。
TickWidth = float
。刻度线线宽(字体单位)。默认 0.4 。
LabelTickPad = float
。刻度线与标签值之间的相对间距。为相对于地图框 X 方向长度的倍数。默认 0.005 倍。
Precision = int
。经纬网标度值保留的小数位数。默认不保留小数位(0)。
Uint = str
。经纬网标度值保留的单位。可以为 ‘D’(度)、 ‘DM’(度分)或 ‘DMS’(度分秒)。
UseWESN = bool
。经纬网标度值是否使用 ‘W’(西经)、‘E’(东经)、‘S’(南纬)、‘N’(北纬)。
LabelFont = str||None
。 标签字体。 默认(None)取决于 matplotlib 设置。
LabelFontSize = float
。 标签字体大小。默认为 7。
LabelFontPROP = dict
。 标签字体的其他属性。详见:matplotlib.font_manager.FontProperties。
LabelColor = str||tuplt||None
。标签字体的颜色。如果为 None,则生成随机颜色。详见:matplotlib。
返回:DataFrame
。地图框绘制过程的详细数据。
添加和优化地图框
0.绘制默认的地图框
0.1 仅地图框
from gma.map import plot# 0. 打开 gma 内置的世界矢量
WorldDS = plot.GetWorldDataSource()
WorldLayer = WorldDS.GetLayer(0)# 1.初始化一个地图框,用于绘图
MapF = plot.MapFrame(Axes = None, BaseMapProj = 'WGS84', Extent = None)# 2.将内置的世界矢量图层添加到地图框(为底图配置随机颜色,并修改边线线宽)
MapL1 = MapF.AddLayer(WorldLayer, LineWidth = 0.2)# 4.设置地图框
Frame = MapF.SetFrame()
0.2 添加经纬网后
from gma.map import plot# 0. 打开 gma 内置的世界矢量
WorldDS = plot.GetWorldDataSource()
WorldLayer = WorldDS.GetLayer(0)# 1.初始化一个地图框,用于绘图
MapF = plot.MapFrame(Axes = None, BaseMapProj = 'WGS84', Extent = None)# 2.将内置的世界矢量图层添加到地图框(为底图配置随机颜色,并修改边线线宽)
MapL1 = MapF.AddLayer(WorldLayer, LineWidth = 0.2)# 3.添加经纬网(默认参数)
GridLines = MapF.AddGridLines(LONRange = (-180, 180, 30), LATRange = (-90, 90, 30))# 4.设置地图框
Frame = MapF.SetFrame()
1.边框颜色和宽度
from gma.map import plot
import matplotlib.pyplot as pltplt.figure(figsize = (7, 7), dpi = 300)# 0. 打开 gma 内置的世界矢量
WorldDS = plot.GetWorldDataSource()
WorldLayer = WorldDS.GetLayer(0)######################## 这里绘制两个图进行对比
## 定义两组参数
FramePar = [('black', 0.3),('blue', 1)]for i in range(2):Axes = plt.subplot(2, 1, i + 1)MapF = plot.MapFrame(Axes = Axes, BaseMapProj = 'WGS84', Extent = None)MapL1 = MapF.AddLayer(WorldLayer, LineWidth = 0.2)GridLines = MapF.AddGridLines(LONRange = (-180, 180, 30), LATRange = (-90, 90, 30))Frame = MapF.SetFrame(FrameColor = FramePar[i][0],FrameWidth = FramePar[i][1])Axes.set_title(f'FrameColor = "{FramePar[i][0]}", FrameWidth = {FramePar[i][1]}', y = 0.98, fontsize = 9)plt.tight_layout()
2.左下右上刻度和标签显示
from gma.map import plot
import matplotlib.pyplot as pltplt.figure(figsize = (7, 7), dpi = 300)# 0. 打开 gma 内置的世界矢量
WorldDS = plot.GetWorldDataSource()
WorldLayer = WorldDS.GetLayer(0)######################## 这里绘制两个图进行对比
## 定义两组参数
Show = [(True, False, False, False),(True, True, True, False)]for i in range(2):Axes = plt.subplot(2, 1, i + 1)MapF = plot.MapFrame(Axes = Axes, BaseMapProj = 'WGS84', Extent = None)MapL1 = MapF.AddLayer(WorldLayer, LineWidth = 0.2)GridLines = MapF.AddGridLines(LONRange = (-180, 180, 30), LATRange = (-90, 90, 30))Frame = MapF.SetFrame(ShowLeft = Show[i][0],ShowBottom = Show[i][1],ShowRight = Show[i][2],ShowTop = Show[i][3])Axes.set_title(f'ShowLeft = {Show[i][0]}, ShowBottom = {Show[i][1]}, ShowRight = {Show[i][2]}, ShowTop = {Show[i][3]}', y = 0.98, fontsize = 9)plt.tight_layout()
3.刻度和标签调整
from gma.map import plot
import matplotlib.pyplot as pltplt.figure(figsize = (7, 7), dpi = 300)# 0. 打开 gma 内置的世界矢量
WorldDS = plot.GetWorldDataSource()
WorldLayer = WorldDS.GetLayer(0)######################## 这里绘制两个图进行对比
## 定义两组参数
Tick = [('black', 0.0, 0, 0.01),('Red', 0.04, 1, 0.005)]for i in range(2):Axes = plt.subplot(2, 1, i + 1)MapF = plot.MapFrame(Axes = Axes, BaseMapProj = 'WGS84', Extent = None)MapL1 = MapF.AddLayer(WorldLayer, LineWidth = 0.2)GridLines = MapF.AddGridLines(LONRange = (-180, 180, 30), LATRange = (-90, 90, 30))Frame = MapF.SetFrame(TickColor = Tick[i][0],TickLength = Tick[i][1],TickWidth = Tick[i][2],LabelTickPad = Tick[i][3])Axes.set_title(f'TickColor = {Tick[i][0]}, TickLength = {Tick[i][0]}, TickWidth = {Tick[i][2]}, LabelTickPad = {Tick[i][3]}', y = 0.98, fontsize = 9)plt.tight_layout()
4.刻度值样式、精度设置
from gma.map import plot
import matplotlib.pyplot as pltplt.figure(figsize = (7, 7), dpi = 300)# 0. 打开 gma 内置的世界矢量
WorldDS = plot.GetWorldDataSource()
WorldLayer = WorldDS.GetLayer(0)######################## 这里绘制两个图进行对比
## 定义两组参数
MarkerValue = [(0, 'D', False),(1, 'DMS', True)]for i in range(2):Axes = plt.subplot(2, 1, i + 1)MapF = plot.MapFrame(Axes = Axes, BaseMapProj = 'WGS84', Extent = None)MapL1 = MapF.AddLayer(WorldLayer, LineWidth = 0.2)GridLines = MapF.AddGridLines(LONRange = (-180, 180, 35.5423), LATRange = (-90, 90, 30))Frame = MapF.SetFrame(Precision = MarkerValue[i][0],Uint = MarkerValue[i][1],UseWESN = MarkerValue[i][2])Axes.set_title(f'Precision = {MarkerValue[i][0]}, Uint = "{MarkerValue[i][1]}", UseWESN = {MarkerValue[i][2]}', y = 0.98, fontsize = 9)plt.tight_layout()
5.刻度值字体设置
from gma.map import plot
import matplotlib.pyplot as pltplt.figure(figsize = (7, 7), dpi = 300)# 0. 打开 gma 内置的世界矢量
WorldDS = plot.GetWorldDataSource()
WorldLayer = WorldDS.GetLayer(0)######################## 这里绘制两个图进行对比
## 定义两组参数
Font = [('Times New Roman', 5, 'blue'),('SimSun', 10, 'green')]for i in range(2):Axes = plt.subplot(2, 1, i + 1)MapF = plot.MapFrame(Axes = Axes, BaseMapProj = 'WGS84', Extent = None)MapL1 = MapF.AddLayer(WorldLayer, LineWidth = 0.2)GridLines = MapF.AddGridLines(LONRange = (-180, 180, 30), LATRange = (-90, 90, 30))Frame = MapF.SetFrame(LabelFont = Font[i][0],LabelFontSize = Font[i][1],LabelColor = Font[i][2])Axes.set_title(f'LabelFont = {Font[i][0]}, LabelFontSize = "{Font[i][1]}", LabelColor = {Font[i][2]}', y = 0.98, fontsize = 9)plt.tight_layout()
相关文章:

gma 地理空间绘图:(1) 绘制简单的世界地图-3.设置地图框
内容回顾 gma 地理空间绘图:(1) 绘制简单的世界地图-1.地图绘制与细节调整 gma 地理空间绘图:(1) 绘制简单的世界地图-2.设置经纬网 方法 SetFrame(FrameColor ‘black’, FrameWidth 0.6, ShowFrame True, ShowLeft True, ShowBottom True, Sho…...

Java Web 实战 03 - 多线程基础(2)
Java Web 实战 03 - 多线程基础篇 2二 . Thread类常见方法2.1 Thread 的常见构造方法2.2 Thread 的几个常见属性getId()getName()getState()getPriority()isDaemon()案例 : 实现 getId()、getName()、 getState()、getPriority()、isDaemon()、isAlive()2.3 启动一个线程-start…...
Linux命令·cat
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。 1.命令格式:cat [选项] [文件]...2.命令功…...

WPF WrapPanel、UniformGrid、DockPanel介绍
WPF WrapPanel、UniformGrid、DockPanel介绍 WrapPanel WrapPanel , 具有在有限的容器范围内, 可以自动换行, 或者换列处理。具体则取决于WrapPanel的排列方式 (Orientation)。 Orientation"Horizontal"时各控件从左至右罗列,当面板长度不够时ÿ…...
华为OD机试题 - TLV 编码(JavaScript)| 含思路
华为OD机试题 最近更新的博客使用说明本篇题解:TLV 编码题目输入输出描述示例一输入输出说明Code解题思路华为OD其它语言版本最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流…...
【华为OD机试真题java、python、c++】开心消消乐【2022 Q4 100分】(100%通过)
代码请进行一定修改后使用,本代码保证100%通过率。本文章提供java、python、c++三种代码 题目描述 给定一个N行M列的二维矩阵,矩阵中每个位置的数字取值为0或1。矩阵示例如: 1100 0001 0011 1111 现需要将矩阵中所有的1进行反转为0,规则如下: 1) 当点击一个1时,该1便被…...

IDEA搭建vue-cli | vue-router | 排错思路、Webpack、Axios、周期、路由、异步、重定向
💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Vue.js概述 Vue 是一套用于构建用户界面的渐进式JavaScript框架。 与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层…...

HashSet原理
HashSet原理HashSet原理1.概述2.底层代码3.原理图解4.总结4.1: 1.7原理总结4.2: 1.8原理总结HashSet原理 1.概述 HashSet 实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的 迭代顺序;特别是它不保证…...

【C#进阶】C# 特性
序号系列文章10【C#基础】C# 正则表达式11【C#基础】C# 预处理器指令12【C#基础】C# 文件与IO文章目录前言1,特性的概念1.1 特性的属性1.2 特性的用途2,特性的定义2.1 特性参数2.2 特性目标3,预定义特性3.1 AttributeUsage3.2 Conditional3.2…...

Java速成篇-Day01笔记
提示:这里只记录我个人不熟悉的知识,并非所有内容 笔记目录课程:04-第一行代码① jshell② 对象.方法课程:05-第一份源码① Java开发程序的流程② 入口方法课程:06-常见问题-中文乱码① 乱码原因② 解决方法课程&#…...

从源码开始精通spring-security1
参考b站up主:传送门 前沿: 本章:spring-security 重要的成员 WebSecurity、HttpSecurity、SecurityBuilder、SecurityFilterChain、FilterChainProxy 重点:WebSecurity、HttpSecurity 他们都实现了 SecurityBuilder 接口 用来构建对象 WebSe…...
你应该优化的JavaScript代码,以及前端工程师日常使用的小技巧。使之更加简洁,可读性更强,更易维护。
本文主要是分享一下平时前端工程师,在写前端代码过程中的一些代码优化,以及使用的一些小技巧,来使我们的代码更加简洁,可读性更强,更易维护。 1. 字符串的自动匹配(includes的优化) includes是…...

自动化测试
文章目录前言一、什么是自动化测试?一个简单的自动化实例二、自动化测试的分类1.接口自动化测试2.UI自动化测试(界面测试)移动端自动化测试web端自动化测试(主要学习)三、selenium工具1.为什么选择selenium作为web自动…...

leetcode-每日一题-807(中等,数组)
正常情况第一眼看这道题,看懂意思的话很简单就可以解出来。给你一座由 n x n 个街区组成的城市,每个街区都包含一座立方体建筑。给你一个下标从 0 开始的 n x n 整数矩阵 grid ,其中 grid[r][c] 表示坐落于 r 行 c 列的建筑物的 高度 。城市的…...

【Linux】Linux项目自动化构建工具make makefile
文章目录1. 背景2.实例3.原理4.项目清理5. 文件属性中的三个时间6. Linux下第一个小程序——进度条6.1 前置知识1:缓冲区6.2前置知识2:回车换行6.3进度条的实现7 Linux下git的”三板斧“1. 背景 一个工程中的源文件不计其数,其按类型、功能、…...
华为OD机试题 - IPv4 地址转换成整数(JavaScript)| 含思路
华为OD机试题 最近更新的博客使用说明本篇题解: IPv4 地址转换成整数题目输入输出示例一输入输出说明示例一输入输出说明Code解题思路华为OD其它语言版本最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | …...

spring整合通用mapper
1.使用通用mapper可以更快速的进行数据库的增删查改操作,加入springboot的管理,常规的SQL都可以复用 2.整合 a)引入依赖 <dependencies><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId>…...
一天什么时间发抖音浏览量高?5个抖音最佳发布时间段
抖音作为现在一款现象级的软件,已经不知不觉地影响着我们生活的方方面面。那抖音想要被更多人看到,就需要掐准哪些时间活跃数最多,今天就来和大家分享一下一天什么时间发抖音浏览量高,又该如何抓住最佳投放契机呢?一、一天什么时…...
华为OD机试题 - 关联子串(JavaScript)| 含思路
华为OD机试题 最近更新的博客使用说明本篇题解:关联子串题目输入输出示例一输入输出说明示例二输入输出说明Code解题思路华为OD其它语言版本最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典...
【代码随想录训练营】【Day33休息】【Day34】第八章|贪心算法|1005.K次取反后最大化的数组和|134. 加油站|135. 分发糖果
K 次取反后最大化的数组和 题目详细:LeetCode.1005 这道题比较简单,这里直接给出贪心策略: 局部最优解: 按照 负数 > 0 > 正数 的优先级次序,依次对nums中的较小数值进行取反因为负负得正,负值越小…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...