python - 如何在底图图中的栅格字段周围绘制线边框?
问题描述
我正在使用绘图中的contourf
函数在地图上绘制一些标量字段Basemap
(例如,见下文)。但是,我希望 Basemap 在每个标量字段覆盖的区域周围绘制边框。这是因为字段是无缝的,但分辨率不同,我希望能够区分哪些区域被哪个字段覆盖。每个字段都有简单的直线纬度/经度边界,因此边界很简单(只有四个纬度/经度段)。这样做有没有直接的警惕?
m8 = Basemap(projection='tmerc', lon_0=125, lat_0=26.2, width=1.5e6,
height=1.4e6, resolution='i', ax = a8)
# Coordinates for the child and parent grids respectively
tsx, tsy = m8(lon_rho, lat_rho)
tsx2, tsy2 = m8(lon_rho2, lat_rho2)
m8.drawparallels(np.arange(0.,81,5.), labels=[0,1,1,0], linewidth=0.5,
**{'fontsize':7})
m8.drawmeridians(np.arange(0.,351.,5.), labels=[0,1,1,0], linewidth=0.5,
**{'fontsize':7})
# Parent field
m8_2 = m8.contourf(tsx2, tsy2, sst_a2, levels=np.linspace(tmin,tmax,num=25),cmap=cmo.thermal, vmin=tmin, vmax=tmax)
# Child field
m8_ = m8.contourf(tsx, tsy, sst_a, levels=np.linspace(tmin,tmax,num=25),cmap=cmo.thermal, vmin=tmin, vmax=tmax)
m8c = m8.contour(tsx, tsy, sst_a, levels=range(tmin, tmax+1), colors='k', linestyles='dashed', linewidths=0.5, alpha=0.8)
m8c.levels = [nf(val) for val in m8c.levels]
fmt = '%r'
a8.clabel(m8c,m8c.levels, fmt=fmt, inline=True, fontsize=8, colors='k')
cNorm = colors.Normalize(vmin=tmin, vmax=tmax)
解决方案
您的每个标量字段都有自己的一组数据,(tsx, tsy)
. 从一组此类数据中,您可以创建convexhull
可用于表示绘图上每个填充轮廓的范围的多边形。
如果您可以将reproducible
代码与数据共享,更多人可以提供帮助,并且答案将更加详尽。
推荐阅读
- python - 从 Python 中的值列表计算累积分布函数
- kubernetes - Kubernetes EnvoyFilter 描述
- react-native - 如何在导航事件上使用 UseEffect 但在导航道具之外设置参数
- javascript - puppeteer 与测试相结合的问题
- python - 文本检测 Discord.py PRAW
- python-3.x - Python解析XML文件时如何解决Key Error
- django - django Q 过滤器不起作用。(对话匹配查询不存在。)
- java - 如果应用程序中有数千个并发用户,应用程序服务器中执行了多少个 JVM 进程
- php - 循环遍历 php 数组并回显结果
- authentication - 如何使用 JWT 注销