首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >新年快乐!| skyborn |手把手教你用 Skyborn 画出专业的大气风场流线图(弯曲箭头3.0)

新年快乐!| skyborn |手把手教你用 Skyborn 画出专业的大气风场流线图(弯曲箭头3.0)

作者头像
用户11172986
发布2026-04-24 19:20:46
发布2026-04-24 19:20:46
610
举报
文章被收录于专栏:气python风雨气python风雨

🌬️ 手把手教你用 Skyborn 画出专业的大气风场流线图

📌 文章标签:Python | 气象可视化 | Skyborn | 流线图 | 大气科学 ⏱️ 阅读时间:约 8 分钟 💻 代码可运行:是

💬 写在前面

之前发了弯曲箭头的教程,skyborn库作者评论区说他也集成了modplot的代码。既然skyborn没空搞,那我们来试一下吧

作为一个在气象可视化摸爬滚打多年的"老司机",我必须推荐一个宝藏工具——Skyborn!虽然它不是专门的箭头库,但它的弯曲流线功能简直是大气可视化的"天花板"!✨(此处广告位招租)

⚠️ 重要提醒:Skyborn 是一个气候与大气科学综合工具包,它的弯曲流线功能只是众多功能之一。但是话说回来,在大气风场可视化方面,它绝对是"天花板级别"的存在!🌟 (我是不是该向那小子收广告费了)

一、安装

代码语言:javascript
复制
!pip install skyborn -i https://pypi.mirrors.ustc.edu.cn/simple/

二、什么是 Skyborn 的"弯曲箭头"?

听到"弯曲箭头",你可能会想到这样:

↗️ 或者 ↘️ 但 Skyborn 的弯曲流线图是这样的:

〰️ 〰️ 〰️ ↘️ ↙️ 〰️ 〰️ 它绘制的是矢量场的流线(streamlines),流线上带有指示风向的箭头。相比普通箭头,流线能更好地展示风场的连续性和演变趋势。

📚 名词解释:流线是某一时刻速度场中的一条曲线,曲线上每点的切线方向与该点的速度方向一致。简单说,就是"风的轨迹线"。

三、快速上手

⚠️ 重要:Skyborn 的 curved_quiver() 函数必须传入 xarray Dataset,不能直接传 numpy 数组!

代码语言:javascript
复制
import skyborn as skb
import matplotlib.pyplot as plt
import xarray as xr
import numpy as np
ds =xr.open_dataset('/home/mw/input/era58091/ERA5-2023-08_pl.nc')
u = ds['u'].sel(level=700, time='2023-08-02T00:00:00.000000000')
v = ds['v'].sel(level=700, time='2023-08-02T00:00:00.000000000') 
u_reversed = u.sel(latitude=slice(None, None, -1))
v_reversed = v.sel(latitude=slice(None, None, -1))
lon = u_reversed['longitude']
lat = u_reversed['latitude']
Lon, Lat = np.meshgrid(lon, lat)
# 直接绑定数据,画图!⭐ 注意:使用 ds 数据时,ds 参数传入数据集
fig, ax = plt.subplots(figsize=(14, 8))

quiver_set = skb.plot.curved_quiver(
    ds=ds.sel(level=200, time='2023-08-02T00:00:00.000000000'),               # ✅ 传入 xarray 数据集
    x='longitude',
    y='latitude', 
    u='u',
    v='v',density=5,
arrowsize=1,
    ax=ax,linewidth=0.4, color='k'
)

plt.colorbar(quiver_set.lines, ax=ax, label='风速 (m/s)', shrink=0.8)
plt.title('📈 ERA5 风场再分析数据', fontsize=14)
plt.show()
image
image

image

参数介绍与不同箭头绘图

一读者留言 :“风场还是ncl画的好看,这个剪头有点太黑了,如果能换成v形箭头就好了”

就这位读者的留言新增这一小节,你什么时候有不能画v形的错觉了

参数

作用

调节技巧

ds

xarray 数据集

✅ 必须传入 Dataset,不能是 None

x

x 坐标变量名

如 'lon'、'longitude'

y

y 坐标变量名

如 'lat'、'latitude'

u

u 分量变量名

风的东西方向分量

v

v 分量变量名

风的南北方向分量

density

流线疏密

越大越密,数据量大时用 0.5-0.8

linewidth

线宽

1.0-2.0 比较合适

arrowsize

箭头大小

1.0-2.0,根据整体比例调整

color

线条颜色

'steelblue'、'navy' 都很专业

arrowstyle

箭头样式

推荐 '-

cmap

颜色映射

coolwarm, RdYlBu_r, viridis

integration_direction

积分方向

'forward', 'backward', 'both'

代码语言:javascript
复制
# 不同箭头样式对比
styles = ['->', '-|>', '<-', '<->', 'fancy', 'simple']

fig, axes = plt.subplots(2, 3, figsize=(16, 10))
axes = axes.flatten()

for i, style in enumerate(styles):
    ax = axes[i]
    skb.plot.curved_quiver(
        ds=ds.sel(level=200, time='2023-08-02T00:00:00.000000000'),
        ax=ax, 
       x='longitude',
       y='latitude', 
        u='u', 
        v='v',
        arrowstyle=style,
        arrowsize=1.5,
        color='steelblue',
        density=5
    )
    ax.set_title(f'箭头样式: {style}', fontsize=14, fontweight='bold')
    ax.set_xlabel('')
    ax.set_ylabel('')

plt.tight_layout()
plt.suptitle('🎨 不同箭头样式对比', fontsize=18, fontweight='bold', y=1.02)
plt.show()

print("\n🎨 推荐使用 '-|>' 方头箭头,最有专业数值预报的感觉!")
image
image

image

填色绘图一份

image
image

image

小结

总得来说,skyborn集成的还行,当然主要是我画的行。

这个函数比较拘泥于xarray格式,对新手不太友好,对格式不那么标准的文件也不友好

也许等哪天得闲去github提一个PR

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气python风雨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🌬️ 手把手教你用 Skyborn 画出专业的大气风场流线图
    • 💬 写在前面
    • 一、安装
    • 二、什么是 Skyborn 的"弯曲箭头"?
    • 三、快速上手
    • 参数介绍与不同箭头绘图
    • 填色绘图一份
    • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档