爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 20894|回复: 13

[源代码] 气象可视化NC数据读取及显示效果

[复制链接]

新浪微博达人勋

发表于 2020-7-14 11:50:39 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 wangyongtao0929 于 2020-7-14 21:56 编辑

import numpy as np
import xarray as xr
import cartopy.crs as ccrs
import cartopy.feature as cfeat
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
import matplotlib.pyplot as plt
# 数据读取及时间平均处理
print("start......")
ds = xr.open_dataset('D:\\Utilities\\wgrib2\\NAFP-HIGF_2020051100_001.nc')
temp = (ds['TMP'] - 273.15)#把温度转换为℃并对其时间纬求平均
temp.attrs['units'] = 'deg C'  #温度单位转换为℃
# 创建画图空间
proj = ccrs.Mercator()  #创建投影
fig = plt.figure(figsize=(6,9))  #创建页面
ax = fig.subplots(1, 1, subplot_kw={'projection': proj})  #子图
# 设置地图属性:加载国界、海岸线、河流、湖泊
#ax.add_feature(cfeat.BORDERS.with_scale('50m'), linewidth=0.8, zorder=1)
#ax.add_feature(cfeat.COASTLINE.with_scale('50m'), linewidth=0.6, zorder=1)  
#ax.add_feature(cfeat.RIVERS.with_scale('50m'), zorder=1)  
#ax.add_feature(cfeat.LAKES.with_scale('50m'), zorder=1)  
# 设置网格点属性
#gl = ax.gridlines(crs=ccrs.PlateCarree(), draw_labels=True,
#  linewidth=1.2, color='k', alpha=0.5, linestyle='--')
#gl.xlabels_top = False  #关闭顶端标签
#gl.ylabels_right = False  #关闭右侧标签
#gl.xformatter = LONGITUDE_FORMATTER  #x轴设为经度格式
#gl.yformatter = LATITUDE_FORMATTER  #y轴设为纬度格式
# 设置colorbar
cbar_kwargs = {
   'orientation': 'horizontal',
   'label': '2m temperature (℃)',
   'shrink': 0.8,
   'ticks': np.arange(-30,35+5,5)
}
# 画图
levels = np.arange(-30,35+1,1)
temp.plot.contourf(ax=ax, levels=levels, cmap='Spectral_r',
    cbar_kwargs=cbar_kwargs, transform=ccrs.PlateCarree())
#plt.show()

plt.gca().xaxis.set_major_locator(plt.NullLocator())
plt.gca().yaxis.set_major_locator(plt.NullLocator())
plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)
plt.margins(0,0)

plt.savefig('glob2.png', format='png', transparent=True, bbox_inches='tight',dpi = 200,pad_inches = 0)

中国智能网格数据

中国智能网格数据


NAFP-HIGF_2020051100_001.nc

28.86 MB, 下载次数: 42, 下载积分: 金钱 -5

售价: 5 贡献  [记录]

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-7-14 13:50:24 | 显示全部楼层
可以把nc文件传上来吗?我想运行一下试试
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-7-14 21:56:52 | 显示全部楼层
Ifare 发表于 2020-7-14 13:50
可以把nc文件传上来吗?我想运行一下试试

可以下载数据了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-7-15 10:21:34 | 显示全部楼层

咋还要贡献,没啥贡献伤不起
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-7-18 08:39:12 | 显示全部楼层
大赞楼主,谢谢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-7-18 10:33:42 | 显示全部楼层
我想请问一下,这个参数levels = np.arange(-30,35+1,1)
为什么设置成35+1,刚学不太明白
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-7-18 12:52:04 | 显示全部楼层
想问这个色标的箭头为什么是朝向左边,如果想要绘制双向箭头的色标要怎么实现呢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-7-20 09:00:48 | 显示全部楼层
wxylndd 发表于 2020-7-18 10:33
我想请问一下,这个参数levels = np.arange(-30,35+1,1)
为什么设置成35+1,刚学不太明白

确保范围是在-30至35范围内。具体翻查arrange函数
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-7-20 18:46:18 | 显示全部楼层
wxylndd 发表于 2020-7-18 10:33
我想请问一下,这个参数levels = np.arange(-30,35+1,1)
为什么设置成35+1,刚学不太明白

np.arange出来的数组是不包含下限的,如果你想数组里有35,那需要下限必须大于35,我也是刚学,共同探讨
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-7-20 19:03:30 | 显示全部楼层
三儿 发表于 2020-7-18 12:52
想问这个色标的箭头为什么是朝向左边,如果想要绘制双向箭头的色标要怎么实现呢

抱歉,真不知道怎么弄
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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