爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 874|回复: 0

[源代码] python绘制涡度填色和风场图

[复制链接]
发表于 2024-6-5 09:31:24 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
import xarray as xr
import numpy as np
import cartopy
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
import matplotlib
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
# 设置全局字体为新罗马
plt.rcParams['font.family'] = 'serif'
plt.rcParams['font.serif'] = ['Times New Roman']
# 设置全局字体权重为normal
plt.rcParams['font.weight'] = 'normal'
# 设置全局字体大小
matplotlib.rcParams['font.size'] = 19  # 设置全局字体大小为12
# 载入数据
data_path = r'D:/pythonProjec/19.nc'  # 替换为您的文件路径
ds = xr.open_dataset(data_path)
#选择时间、层次、变量
time = '2024-05-19T10:00:00'
level_1 = 500
ds_selected = ds.sel(time=time,level=level_1)
u = ds_selected['u']  # 东西向风速
v = ds_selected['v']  # 南北向风速
d= ds_selected['vo']  # 涡度
# 获取经度和纬度,假设这些是坐标维度
longitude = u.longitude
latitude = u.latitude
#选择画图区域范围
extents = [106, 111, 30, 35]
#投影方式
crs = ccrs.PlateCarree()
# 创建图形和轴对象
fig = plt.figure(figsize=[8,10])
ax = fig.add_subplot(111, projection=crs)
ax.set_extent(extents, crs)
gl = ax.gridlines(draw_labels=True,
                   xlocs=np.arange(extents[0], extents[1], 1),  # 经度位置,包含边界值
                   ylocs=np.arange(extents[2], extents[3], 1),
                   xformatter=LONGITUDE_FORMATTER,
                   yformatter=LATITUDE_FORMATTER,
                   linestyle='--',
                   linewidth=0)
#画涡度等值线图
contour1 = ax.contour(longitude, latitude, d,  colors='k', linewidths=1, linestyles='solid' ,alpha=1)
c1 = plt.clabel(contour1, inline=True, fontsize=10)
#画涡度填色图
cf_rh = ax.contourf(longitude,latitude, d,
                    cmap='coolwarm',#加入色条  
                    extend='both')#设置色条为两头尖
#色标的设置
cb = fig.colorbar(cf_rh,orientation='vertical',shrink=0.75)

# 绘制风杆
ax.barbs(longitude[::2],latitude[::2],u[::2,::2],v[::2,::2], barbcolor=['k'],  linewidth=0.5,  
         length=5, barb_increments=dict(half=2, full=4, flag=20))  
# 调整风杆疏密度,风羽图设置   半根2米,一根4米,三角20

# 使用shp文件
reader = cartopy.io.shapereader.Reader('D:/pythonProjec/20230206/xx.shp')
provinces = cartopy.feature.ShapelyFeature(reader.geometries(),crs=ccrs.PlateCarree(),
                                          edgecolor='k',
                                          facecolor='none',alpha=1)
ax.add_feature(provinces, linewidth=0.65, zorder=2)

#设置题目
ax.set_title("19-18-500")
#保存文件
plt.savefig("D:/pythonProjec/1918500.jpg",dpi=500)


密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表