该代码用于绘制全球季节性平均降水的空间分布图。利用netCDF4和cartopy库读取并处理数据,通过循环计算特定季节(MAM, JAS, SON, DJS)的平均值,并使用contourf绘制等值线图。地图上标注了关键经线和纬度,且提供了颜色条以显示降水强度。 摘要由CSDN通过智能技术生成 import netCDF4 as nc import cartopy . crs as ccrs from cartopy . util import add_cyclic_point def sea_mean ( start ) : temp = [ ] for i in range ( start , 468 , 12 ) : temp . append ( i ) temp . append ( i + 1 ) temp . append ( i + 2 ) mean_season = np . nanmean ( pre [ temp , : , : ] , 0 ) return mean_season if __name__ == '__main__' : dataset = nc . Dataset ( 'GPCP.precip.mon.mean.nc' ) # 读取数据 print ( dataset . variables . keys ( ) ) # 输出所有变量 lon = dataset . variables [ 'lon' ] [ : ] . data # 读取经度 lat = dataset . variables [ 'lat' ] [ : ] . data # 读取维度 time = dataset . variables [ 'time' ] # 读取时间 real_time = nc . num2date ( time , time . units ) . data # 转成时间格式 pre = dataset . variables [ 'precip' ] [ : ] . data # 读取降水 pre [ pre < 0 ] = np . nan fig = plt . figure ( ) # 设置一个画板,将其返还给fig for i in range ( 4 ) : mon = [ 3 , 6 , 9 , 12 ] title = [ 'MAM' , 'JAS' , 'SON' , 'DJS' ] ax = fig . add_subplot ( 2 , 2 , i + 1 , projection = ccrs . PlateCarree ( central_longitude = 180 ) , facecolor = 'gray' ) # 改动了居中经线后,横坐标的经纬度维持不变!!!后续的绘图要根据原始的-180~180的横坐标绘制 ax . coastlines ( ) # 消除白线 cycle_data , cycle_lon = add_cyclic_point ( sea_mean ( mon [ i ] ) , coord = lon ) cycle_LON , cycle_LAT = np . meshgrid ( cycle_lon , lat ) cs = ax . contourf ( cycle_LON - 180 , cycle_LAT , cycle_data , cmap = 'bwr_r' , extend = 'both' , levels = range ( 0 , 12 ) ) plt . title ( title [ i ] ) plt . plot ( range ( - 180 , 180 ) , [ 0 ] * 360 , 'k--' ) for line in [ 9 - 180 , 43.5 - 180 , 104 - 180 , 162.5 - 180 , 220.5 - 180 , 280 - 180 , 311 - 180 ] : plt . plot ( [ line ] * 180 , range ( - 90 , 90 ) , c = 'w' ) plt . xticks ( range ( - 180 , 180 , 60 ) , [ '0' , '60°E' , '120°E' , '180°' , '120°W' , '60°W' ] , fontsize = 10 ) plt . yticks ( range ( - 90 , 91 , 30 ) , [ '90°S' , '60°S' , '30°S' , '0' , '30°N' , '60°N' , '90°N' ] , fontsize = 10 ) plt . colorbar ( cs ) plt . show ( )
  1. 改动了居中经线后,横坐标的经纬度维持不变!!!依旧是-180~180°
  2. 降水分布图也要跟着向西平移180度
SNX 全球 站点坐标文件下载地址: ftp://igs.gnsswhu.cn/pub/whu/pub/gps/products/YYYY/igsyyPwwww.snx.Z 结果输出: # coding=utf-8 # !/usr/bin/env python Program:plot_global_sitemap.py Function:根据站点列表绘制站坐标 全球 分布图 本来想绘制如下的色斑 ,但一开始不知到它叫这个名字,从等值线开始查起,发现等值线绘制是个比较大且难的 问题 ,会出现等值点计算、等值点追踪、等值线裁剪等一些列的部分所组成,预想到最后还可能会出现效率 问题 ,然,现今已有很多成熟和软件已集成(实现)了该功能,故在查找方法(方式)过程中小伙伴发现了它原来的真实名字,好了,废话到此结束。 一、色斑 绘制 1. 加载数据 做加载的数据包括, 经度 、维度、 降水 值三类数据,我把它们存在了一个csv文件中了,由于数据提前已进行了插值处理,因此这里不再进行插值计算。