爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 25460|回复: 6

[求助] python读取nc文件出图

[复制链接]

新浪微博达人勋

发表于 2020-10-7 21:03:39 | 显示全部楼层 |阅读模式
5金钱
有偿求助:用python对一个nc文件读取出图,纬度选取:   北纬26-32度 , 经度选取:东经90-120度,  时间选取:2010-2012年,能出图就行 。价格你说 ,刚学python难度不会太难  濑尿




最佳答案

查看完整内容

import xarray as xr import matplotlib.pyplot as plt import cartopy.crs as ccrs import cartopy.feature as cfeat import matplotlib.colors as mcolors from cartopy.io.shapereader import Reader from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER # 数据读取 ds = xr.open_dataset(r'C:%users\Administrator\Desktop\17\pr_Amon_FGOALS-f3-L_ssp126_r1i1p1f1_gr_201501-210012.nc') pr ...
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-10-7 21:03:40 | 显示全部楼层
import xarray as xr
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeat
import matplotlib.colors as mcolors
from cartopy.io.shapereader import Reader
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
# 数据读取
ds = xr.open_dataset(r'C:\Users\Administrator\Desktop\17\pr_Amon_FGOALS-f3-L_ssp126_r1i1p1f1_gr_201501-210012.nc')
pr = ds['pr']
#取一段时间内的降水作为绘图的数据源
pr_0=pr[793:1032]
pr_ave=pr_0.mean(dim='time')*86400*30*12
lon=ds.lon
lat=ds.lat
lon_range=lon[(lon>73)&(lon<136)]
lat_range=lat[(lat>3)&(lat<54)]
pr_region=pr_ave.sel(lon=lon_range,lat=lat_range)
# 创建画图空间
#投影
proj = ccrs.PlateCarree()
#创建页面
fig = plt.figure(figsize=(16,10))
#子图
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)
# 设置网格点属性
gl = ax.gridlines(crs=ccrs.PlateCarree(), draw_labels=True,
  linewidth=1.2, color='k', alpha=0.5, linestyle='--')
gl.top_labels = False  #关闭顶端标签
gl.right_labels = False  #关闭右侧标签
gl.xlabel_style={'size':12,'color':'red'}
gl.ylabel_style={'size':12,'color':'blue'}
gl.xlines=False
gl.ylines=False
gl.xformatter = LONGITUDE_FORMATTER  #x轴设为经度格式
gl.yformatter = LATITUDE_FORMATTER  #y轴设为纬度格式
plt.rcParams['font.sans-serif']=['SimHei']#显示中文字
# 设置colorbar
colorlevel=[0.1,10.0,25.0,50.0,100.0,250.0,500.0]#雨量等级
colordict=['#A6F28F','#3DBA3D','#61BBFF','#0000FF',
           '#FA00FA','#800040']#颜色列表
rain_map=mcolors.ListedColormap(colordict)#产生颜色映射
norm=mcolors.BoundaryNorm(colorlevel,rain_map.N)#生成索引

# 画图
ax.set_title('2080-2100年均降水总量',fontsize=20,loc='left')#标题
#等值线
cs=pr_region.plot.contourf(ax=ax, levels=colorlevel,
                           cmap=rain_map,
                           norm=norm,
                           transform=ccrs.PlateCarree(),
                           extend='both')
#显示图像
fig.show()
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-10-7 21:07:39 | 显示全部楼层
我滴youxiang:                    francismyron@qq.com      {:eb303:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-10-11 18:38:33 | 显示全部楼层
JZMing 发表于 2020-10-7 22:17
import xarray as xr
import matplotlib.pyplot as plt
import cartopy.crs as ccrs

谢谢大佬。我的变量是风速,画出来的图 还有点可爱
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2020-10-12 07:44:43 | 显示全部楼层
记得, xr.open_dataset 不支持中文路径的去去
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-10-12 20:54:37 | 显示全部楼层
zane 发表于 2020-10-12 07:44
记得, xr.open_dataset 不支持中文路径的去去

                          好的
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2020-11-20 14:33:14 | 显示全部楼层
收藏一下了
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

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

本版积分规则

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

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

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