目录
【总代码】(简易好理解版本,最后面还有个小升级版)
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
import netCDF4 as nc
from pyproj import Proj
import datetime as dt
import xarray as xr
import datetime as dt
class Sim1(object):
def __init__(self,file_nc):
self.file_obj = xr.open_dataset(file_nc)
pass
def Draw_vector(self,mon,n):
u_mean,v_mean,speed = self.cal_mean(mon,n)
m,xi,yi = self.bmap()
m.quiver(xi[::4,::4],yi[::4,::4],u_mean[::4,::4],v_mean[::4,::4],speed[::4,::4],scale=180,color='r',width=0.002)#scale=80--80m/s设置为箭头单位强度
plt.savefig(f'sim_{n}.png')
pass
def cal_mean(self,mon,n):
u = self.file_obj.u
v = self.file_obj.v
u = u.loc[u.time.dt.month.isin(mon)]
v = v.loc[v.time.dt.month.isin(mon)]
u_mean = np.mean(u,axis=0)
v_mean = np.mean(v,axis=0)
speed = np.sqrt(u_mean**2 + v_mean**2)
return u_mean,v_mean,speed
def bmap(self):
m = Basemap(boundinglat=75, lon_0 = 0,projection = 'npstere', round=True)
m.drawcoastlines(linewidth=0.5)
m.drawstates()
m.drawcountries()
lons = self.file_obj.longitude
lats = self.file_obj.latitude
xi,yi = m(lons,lats)
return m,xi,yi
a = Sim1('/mnt/g/st-nsidc/icemotion_daily_nh_25km_20210101_20211231_v4.1.nc')
a.Draw_vector(mon=range(1,13),n='2021')
【解析】
一、相关库的安装

首先大家的环境要有这些库
可以用conda list查询:

本文介绍了一种使用Python绘制北极海冰运动矢量图的方法。通过定义一个类Sim1来处理海冰运动数据,并利用Basemap库绘制不同季节的平均海冰运动矢量图。
最低0.47元/天 解锁文章
1051

被折叠的 条评论
为什么被折叠?



