- 积分
- 63464
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-7-23
- 最后登录
- 1970-1-1
|
发表于 2024-11-3 10:29:26
|
显示全部楼层
本帖最后由 edwardli 于 2024-11-3 20:03 编辑
楼上正解是出自2021版《Python气象资料处理与可视化》(河北科技出版社)。以下为“Python语言在气象业务中的应用系列课程”课件内容:
matplotlib设计上对于不足半个风羽half,也就是2m/s的风场不做绘制或以空心圆替代,但是同时该点的风向信息就被消隐了。
一、不想要空心圆,且,不关心风向
- ax_barbs(size=dict(emptybarb=0)就不显示小圆圈。radius of the circle used for low magnitudes
- fill_empty绘制的空barb(圆)是否应填充旗帜颜色。如果未填充,则中心是透明的
二、不想要空心圆,但,关心风向
- 旧版:可以通过修改matplotlib自带的barbs方法,将风场的风,向表示出来(见 《Python气象资料处理与可视化》5.4.1节)
- 新版【3.4.2、3.9.X】:第【1】步:D:\Anaconda3\Libsite-packages\matplotlib\quiver.py 第1061行条件由
改为
- if empty_flag[index] and u[index] == 0 and v[index] == 0:
复制代码
第【2】步:在大概第1110行附近,加入代码:
- if empty_flag[index] and u[index] != 0 and v[index] != 0:
- # If the half barb is the first on the staff, traditionally it
- # is offset from the end to make it easy to distinguish from a
- # barb with a full one
- if offset == length:
- poly_verts.append((endx, endy + offset))
- offset -= 1.5 * spacing
- poly_verts.extend(
- [(endx, endy + offset),
- (endx + full_height / 200, endy + offset + full_width / 40),
- (endx, endy + offset)])
复制代码
第【3】步:删余_pycache_文件夹,重启内核
quiver.py
(45.84 KB, 下载次数: 1)
|
|