import netCDF4 as nc
import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
def plot_currents(file_path, variable_name, lon_name, lat_name):
"""
绘制洋流并保存为JPEG图片。
参数:
file_path (str): NetCDF文件路径。
variable_name (str): 变量名。
lon_name (str): 经度变量名。
lat_name (str): 纬度变量名。
"""
# 打开NetCDF文件
dataset = nc.Dataset(file_path, 'r')
# 获取经度、纬度和降水量数据
lons = dataset.variables[lon_name][:]
lats = dataset.variables[lat_name][:]
precip = dataset.variables[variable_name][:]
# 关闭NetCDF文件
dataset.close()
# 创建经纬度网格
lon, lat = np.meshgrid(lons, lats)
# 设置地图投影为PlateCarree投影
fig, ax = plt.subplots(subplot_kw={'projection': ccrs.PlateCarree()})
# 获取数据 这里需要根据数据做调整
currents_data = precip[0, 0, :]
# 绘制降水量数据
cs = ax.contourf(lon, lat, currents_data, transform=ccrs.PlateCarree())
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 黑体
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
# 添加海岸线、州界和国界
# ax.coastlines()
ax.gridlines(draw_labels=True)
ax.set_title('全球洋流')
# 添加颜色条
fig.colorbar(cs, ax=ax, orientation='vertical', pad=0.05, aspect=50)
# 保存图像为JPEG文件
plt.savefig('currents_cartopy.jpg', dpi=400)
# 显示图形
plt.show()