python 如何绘制全球风场(以2020年月均数据为例)

简介: python 如何绘制全球风场(以2020年月均数据为例)

使用python绘制全球的风场主要用到matplotlib包中:

quiver()

函数,具体参数设置可以查看官网。

数据来源于ERA5的月均10m风矢量资料:ERA5

为了提高运行效率,我将数据重新插值,分辨率为:2.5°x2.5°

下面举个例子进行演示,我只选取2020年的数据,绘制全球范围内,每个月的数据资料,填色为风速大小。

代码很简单,核心代码只有下面一句:


cb=ax.quiver(x[::5,::5],y[::5,::5],u.data[i,:,:][::5,::5],v.data[i,:,:][::5,::5],pivot='mid',\
    width=0.0018,scale=300,transform=ccrs.PlateCarree(),color='k',angles='xy',zorder=1)

需要注意的是,x、y是二维的,也就是需要将读取的经纬度进行np.meshgrid()处理,同时为了绘制的箭头美观,间隔明显,每5个为间隔进行绘制,其他一些设置就是调整箭头长度、宽度、比例、颜色等等,可以根据图像美观设置。


绘制结果如下所示:


image.png


下面是全部代码:


# -*- coding: utf-8 -*-
"""
Created on %(date)s
@author: %(jixianpu)s
introduction : keep learning althongh walk slowly
"""
import cartopy.mpl.ticker as cticker
import xarray as xr
import numpy as np
import matplotlib.pyplot as plt
from cartopy.mpl.ticker import LongitudeFormatter ,LatitudeFormatter
import cartopy.crs as ccrs
import cartopy.feature as cfeature
p=r'D:/data.nc'
data=xr.open_dataset(p).sel(time=slice("2020","2020"))
u=data.u10
v=data.v10
w=np.sqrt(u*u+v*v)
lon=data.lon.data
lat=data.lat.data
def make_map(ax, title,box,xstep,ystep):
    # set_extent  set crs
    ax.set_extent(box, crs=ccrs.PlateCarree())
    ax.coastlines(scale)  # set coastline resolution
    # set coordinate axis
    ax.set_xticks(np.arange(box[0], box[1], xstep),crs=ccrs.PlateCarree())
    ax.set_yticks(np.arange(box[2], box[3], ystep),crs=ccrs.PlateCarree())
    ax.xaxis.set_major_formatter(cticker.LongitudeFormatter())
    #经度0不加标识
    ax.yaxis.set_major_formatter(cticker.LatitudeFormatter())
    ax.set_title(title, fontsize=15, loc='center') 
    return ax
fig=plt.figure(figsize=(30,25))
x,y=np.meshgrid(lon,lat)
box1 = [0, 361, -90, 91]  
scale = '50m'            
xstep, ystep = 10, 10  
cmap=plt.get_cmap('Reds')#'RdYlBu_r'
titl=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec']
for i in range(12):
    print(i)
    proj=ccrs.PlateCarree(central_longitude=180)
    ax=fig.add_subplot(4,3,i+1,projection=proj)
    make_map(ax,str(titl[i]),box1,45,45)
    cb=ax.quiver(x[::5,::5],y[::5,::5],u.data[i,:,:][::5,::5],v.data[i,:,:][::5,::5],pivot='mid',\
    width=0.0018,scale=300,transform=ccrs.PlateCarree(),color='k',angles='xy',zorder=1)
    cp=ax.contourf(lon,lat,w.data[i],zorder=0,transform=ccrs.PlateCarree(),cmap=cmap,levels=np.arange(0,21,2),extend='both')
plt.show()


                    一个努力学习python的海洋人
                    水平有限,欢迎指正!!!
                    欢迎评论、收藏、点赞、转发、关注。
                    关注我不后悔,记录学习进步的过程~~
相关文章
|
7月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
5260 1
|
7月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
700 0
|
7月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
7月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
8月前
|
存储 监控 API
Python实战:跨平台电商数据聚合系统的技术实现
本文介绍如何通过标准化API调用协议,实现淘宝、京东、拼多多等电商平台的商品数据自动化采集、清洗与存储。内容涵盖技术架构设计、Python代码示例及高阶应用(如价格监控系统),提供可直接落地的技术方案,帮助开发者解决多平台数据同步难题。
|
8月前
|
存储 JSON 算法
Python集合:高效处理无序唯一数据的利器
Python集合是一种高效的数据结构,具备自动去重、快速成员检测和无序性等特点,适用于数据去重、集合运算和性能优化等场景。本文通过实例详解其用法与技巧。
246 0
|
8月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
8月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
8月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
8月前
|
数据可视化 大数据 数据挖掘
基于python大数据的招聘数据可视化分析系统
本系统基于Python开发,整合多渠道招聘数据,利用数据分析与可视化技术,助力企业高效决策。核心功能包括数据采集、智能分析、可视化展示及权限管理,提升招聘效率与人才管理水平,推动人力资源管理数字化转型。

推荐镜像

更多