Python绘制海表温度


前言

绘制西太年平均温度空间分布图


一、数据准备

在NASA官网 下载在分析的海表温度数据
下载地址(https://psl.noaa.gov/data/gridded/data.noaa.ersst.v5.html)

二、代码编写

1.引入库

代码如下:

import xarray as xr  
import matplotlib.pyplot as plt  
import cartopy.crs as ccrs  
import cartopy.feature as cfeature  
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter  # 导入经纬度格式器 

2.读入数据并绘图

代码如下(示例):

# 加载NetCDF格式的SST数据(替换为你的SST数据文件路径)  
ds = xr.open_dataset('C:\\Users\\huain\\Desktop\\BY\\sst.nc')  # 假设你的SST数据在'sst.nc'文件中  
  
# 选择SST变量(替换为你的SST变量名)  
sst = ds['sst']  # 假设SST变量名为'sst'  
  
# 计算时间轴上的平均值(如果时间是一个维度)  
sst_mean = sst.mean(dim='time')  # 假设'time'是时间维度  
  
# 创建一个地图并设置投影  
fig = plt.figure(figsize=(10, 5))  
ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())  
  
# 添加陆地和海洋特征  
ax.add_feature(cfeature.LAND, color='lightgray')  
ax.add_feature(cfeature.OCEAN, color='w', edgecolor='lightgray')  
ax.coastlines(color='black')  
  
# 绘制SST平均值数据  
sst_plot = sst_mean.plot.contourf(ax=ax, transform=ccrs.PlateCarree(), cmap='viridis', levels=30, extend='both', add_colorbar=False)  # levels参数可以调整等温线的数量  
  
# 添加颜色条  
cbar = fig.colorbar(sst_plot, drawedges=True, ax=ax, location='right', shrink=0.95, pad=0.01, spacing='uniform', label='Average Sea Surface Temperature (°C)')  
cbar.ax.tick_params(labelsize=10)  # 设置色标尺标签大小 

# 添加等温线  
sst_contour = sst_mean.plot.contour(ax=ax, transform=ccrs.PlateCarree(), colors='gray', levels=20)  
   
# 为等值线添加标签  
plt.clabel(sst_contour, inline=True, fontsize=10, fmt='%1.1f') 

 
  
# 添加一个采样点位(129°E,17°N)  
sample_point = ax.plot(129, 17, 'ro', transform=ccrs.PlateCarree(), markersize=8)  
  
# 为采样点添加标签  
ax.annotate('WPS-1/2', xy=(129, 17), xytext=(20, 20),  
            textcoords='offset points', ha='left', va='bottom',  
            bbox=dict(boxstyle='round', fc='w', ec='0.5', lw=2),  
            arrowprops=dict(facecolor='black', arrowstyle='->'),  
            transform=ccrs.PlateCarree())  
  
# 设置地图的经纬度范围(可选)  
ax.set_extent([100, 180, -30, 50], crs=ccrs.PlateCarree())  
  
# 添加网格线  
gl = ax.gridlines(draw_labels=True,  
                  linewidths=2,  
                  color='gray',  
                  alpha=0.5,  
                  linestyle='-')  
gl.xlabels_top = False  
gl.ylabels_right = False  
gl.xformatter = LongitudeFormatter()  # 使用默认的经度格式器  
gl.yformatter = LatitudeFormatter()   # 使用默认的纬度格式器  
gl.xlabel_style = {'size': 10, 'color': 'black'}  
gl.ylabel_style = {'size': 10, 'color': 'black'}  
  
# 显示地图  
plt.show()

绘图结果

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值