python 绘制封装函数绘制南海小地图

简介: python 绘制封装函数绘制南海小地图

使用python封装函数为每一幅子图上添加小地图,以中国南海为例,绘制结果如下所示:



237528bde8f841c2a5003e3ccf50d77d.png


其中,主要封装了两个函数,一个用来绘制小地图,一个用来添加海洋、陆地、湖泊、河流等属性,而图中多个子图通过for 循环进行绘制。


代码如下:


import matplotlib.pyplot as plt
import matplotlib.transforms as mtransforms
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import numpy as np
def adjust_sub_axes(ax_main,ax_sub, shrink):
    '''   
    将ax_sub调整到ax_main的右下角.shrink指定缩小倍数。
    当ax_sub是GeoAxes时,需要在其设定好范围后再使用此函数
    '''
    bbox_main = ax_main.get_position()
    bbox_sub = ax_sub.get_position()
    ratio = bbox_main.width / bbox_sub.width
    wnew = bbox_sub.width* ratio * shrink
    hnew = bbox_sub.height*ratio* shrink
    bbox_new = mtransforms.Bbox.from_extents(
        bbox_main.x1 - wnew,bbox_main.y0,
        bbox_main.x1, bbox_main.y0 + hnew
    )
    ax_sub.set_position(bbox_new)
def map(ax):
    ax.coastlines()
    ax.add_feature(cfeature.OCEAN)
    ax.add_feature(cfeature.LAND, edgecolor='black')
    ax.add_feature(cfeature.LAKES, edgecolor='black')
    ax.add_feature(cfeature.RIVERS)
    return ax
### 设置投影、画板、子图个数、子图区域
proj = ccrs.PlateCarree()
fig   =   plt.figure(figsize=(10,8),dpi=100)
subplot_kw   =   {'projection': proj}                                     
axes_main = fig.subplots(2, 2, subplot_kw=subplot_kw)
axes_sub  = fig.subplots(2, 2, subplot_kw=subplot_kw)
box_main =[59,151, 0,60]
box_sub = [116,124,20,28]
### 循环绘制子图
for a_main,a_sub in zip(axes_main.flat, axes_sub.flat):
    ax1=a_main
    ax1=map(ax1)
    gl=ax1.gridlines(draw_labels=True, xlocs=[60,90,120,150],ylocs=[10,30,50])
    gl.xlabels_top = None
    gl.ylabels_right = False
    ax1.set_extent(box_main, crs=proj)
    #===================a_sub=================================================
    ax2=a_sub
    ax2=map(ax2)
    ax2.set_extent(box_main, crs=proj)
    adjust_sub_axes(a_main,a_sub,shrink=.3)
plt.show()

简单记录一下,可能还有许多细节没有处理到位,欢迎交流~


相关文章
|
6天前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
155 99
|
6天前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
139 98
|
10天前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
2月前
|
PHP Python
Python format()函数高级字符串格式化详解
在 Python 中,字符串格式化是一个重要的主题,format() 函数作为一种灵活且强大的字符串格式化方法,被广泛应用。format() 函数不仅能实现基本的插入变量,还支持更多高级的格式化功能,包括数字格式、对齐、填充、日期时间格式、嵌套字段等。 今天我们将深入解析 format() 函数的高级用法,帮助你在实际编程中更高效地处理字符串格式化。
261 0
|
29天前
|
Python
Python 函数定义
Python 函数定义
97 1
|
1月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
398 1
|
18天前
|
算法 安全 数据安全/隐私保护
Python随机数函数全解析:5个核心工具的实战指南
Python的random模块不仅包含基础的随机数生成函数,还提供了如randint()、choice()、shuffle()和sample()等实用工具,适用于游戏开发、密码学、统计模拟等多个领域。本文深入解析这些函数的用法、底层原理及最佳实践,帮助开发者高效利用随机数,提升代码质量与安全性。
87 0
|
1月前
|
数据挖掘 数据处理 C++
Python Lambda:从入门到实战的轻量级函数指南
本文通过10个典型场景,详解Python中Lambda匿名函数的用法。Lambda适用于数据处理、排序、条件筛选、事件绑定等简洁逻辑,能提升代码简洁性和开发效率。同时提醒避免在复杂逻辑中过度使用。掌握Lambda,助你写出更高效的Python代码。
116 0
|
2月前
|
索引 Python 容器
[oeasy]python096_列表_计数函数_count
本教程详细介绍了Python中列表的计数方法`count`,包括其基本用法、与`len`函数的区别,以及如何结合索引操作查找和删除特定元素。同时探讨了字符串对象的`count`方法,并通过实例演示了如何统计字符出现次数。
61 7
|
2月前
|
机器学习/深度学习 数据处理 索引
Python内置函数:面试通关的49个秘密武器
本文精选49个Python高频面试内置函数,涵盖数值处理、类型转换、序列操作、字典集合、函数式编程及高级特性,结合真实代码案例解析底层逻辑与应用场景,助你提升开发效率,轻松应对技术面试。
61 1

推荐镜像

更多