使用python做出sst的时间-经度剖面图

部署运行你感兴趣的模型镜像

时间-经度剖面图能很直观展现出某一物理量在一段时间内在经度上的变化。

本文选取1954-1956三年对5°S-5°N的sst数据做平均绘制时间-经度剖面图

首先,依旧是引用第三方库,我一般会直接引用一些常用的库

import numpy as np
import cartopy.feature as cfeature
import matplotlib.pyplot as plt
import xarray as xr
import cartopy.crs as ccrs
import cartopy.feature as cfeat
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
from matplotlib import font_manager as fm
from matplotlib.pyplot import MultipleLocator
import matplotlib.ticker as mticker
from matplotlib import ticker, cm
import matplotlib

接着就是读取我们的sst文件

path='C:\\sst.nc'
sst=xr.open_dataset(path).sst

我们选取月份

gb = sst.groupby("time.month")

接着计算sst异常值,即原值减去平均值,并取纬度的平均值

ssta = gb - gb.mean(dim="time")#计算异常
ssta=ssta.sel(time=slice('1954','1956'))#选取三年
ssta=ssta.sel(lat=slice(5,-5),lon=slice(120,280))#选取-5 - 5北纬
ssta=ssta.mean('lat')
ssta=ssta.sortby('time',ascending=False)
#对时间-月进行转换
ssta['time']=np.arange(1,36+1,1)

 此时我们的ssta已经是完善的数据了,直接绘图即可

fig = plt.figure(figsize=(4,7))
ax = fig.add_axes([0.1,0.1,0.9,0.9])
ax.set_xticks(list(range(120,280+40,40)))#设置xy轴刻度
ax.set_yticks(np.arange(1,36+1,1))
ax.set_yticklabels([12,11,10,9,8,7,6,5,4,3,2,1,12,11,10,9,8,7,6,5,4,3,2,1,12,11,10,9,8,7,6,5,4,3,2,1])
lon_formatter = LongitudeFormatter(zero_direction_label=False)
ax.xaxis.set_major_formatter(lon_formatter)
cbar_kwargs = {'ticks':np.arange(-2,2+1,1),'label':'','orientation':'horizontal','pad':0.07}
cf=ssta.plot.contourf(cmap='rainbow',levels=np.arange(-2,2+.1,.1),extend='both',add_colorbar=True,cbar_kwargs=cbar_kwargs)
ax.text(88,6.5,'1956')
ax.text(88,6.5+12,'1955')
ax.text(88,6.5+24,'1954')
ax.set_title('SST anomaly',loc='center')
ax.set_xlabel('')
ax.set_ylabel('')
fig.savefig('1.png',bbox_inches='tight',dpi=600)

最后得出图

 完整代码如下

import numpy as np
import cartopy.feature as cfeature
import matplotlib.pyplot as plt
import xarray as xr
import cartopy.crs as ccrs
import cartopy.feature as cfeat
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
from matplotlib import font_manager as fm
from matplotlib.pyplot import MultipleLocator
import matplotlib.ticker as mticker
from matplotlib import ticker, cm
import matplotlib

path='C:\\Users\\85467\\Desktop\\\sst.mnmean (1)\\sst.mnmean (1).nc'
sst=xr.open_dataset(path).sst
gb = sst.groupby("time.month")
ssta = gb - gb.mean(dim="time")#计算异常
ssta=ssta.sel(time=slice('1954','1956'))#选取三年
ssta=ssta.sel(lat=slice(5,-5),lon=slice(120,280))#选取-5 - 5北纬
ssta=ssta.mean('lat')

ssta=ssta.sortby('time',ascending=False)

ssta['time']=np.arange(1,36+1,1)

fig = plt.figure(figsize=(4,7))
ax = fig.add_axes([0.1,0.1,0.9,0.9])
ax.set_xticks(list(range(120,280+40,40)))#设置xy轴刻度
ax.set_yticks(np.arange(1,36+1,1))
ax.set_yticklabels([12,11,10,9,8,7,6,5,4,3,2,1,12,11,10,9,8,7,6,5,4,3,2,1,12,11,10,9,8,7,6,5,4,3,2,1])
lon_formatter = LongitudeFormatter(zero_direction_label=False)
ax.xaxis.set_major_formatter(lon_formatter)
cbar_kwargs = {'ticks':np.arange(-2,2+1,1),'label':'','orientation':'horizontal','pad':0.07}
cf=ssta.plot.contourf(cmap='rainbow',levels=np.arange(-2,2+.1,.1),extend='both',add_colorbar=True,cbar_kwargs=cbar_kwargs)
ax.text(88,6.5,'1956')
ax.text(88,6.5+12,'1955')
ax.text(88,6.5+24,'1954')
ax.set_title('SST anomaly',loc='center')
ax.set_xlabel('')
ax.set_ylabel('')
fig.savefig('1.png',bbox_inches='tight',dpi=600)

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值