使用python对海洋气象数据做显著性检验,并绘制空间pattern

选择数据集:
1 SST (Daily Sea Surface Temperature)
NOAA High-resolution Blended Analysis

  • daily
  • 分辨率:2.5
  • 时间:2010
  • http://www.esrl.noaa.gov/psd/data/gridded/data.noaa.oisst.v…
    2 OLR (Outgoing Longwave Radiation)- NOAA Interpolated OLR
  • daily
  • 分辨率:2.5
  • 时间覆盖范围:1974-2013
  • http://www.esrl.noaa.gov/psd/data/gridded/data.interp_OLR.html

使用编程工具:

  • python

主要使用函数:

  • stats.linregress() 函数说明点这里

内容:

  • 对2010年的SST和OLR数据分布进行显著性检验,并绘制空间分布
  • 先各自对数据计算一年的趋势以及相关,再计算两个数据之间的相关
  • 绘制空间pattern

具体过程:

  • 1 导入库
  • 2 读取数据
  • 3 计算相关和趋势
  • 4 绘图
  • 5 保存数据

过程还是比较清晰的,直接附上结果,
ps(标题时间打错了、横轴的label也搞错了,懒得重画了,代码中应该没问题了)




SST和OLR的pattern还是比较容易理解的,这两者的相关的空间分布,属实有点没看懂。

  • 图中异常空白处是由于数据存在nan值导致的
  • 包括打的点有些存在缺失,也和数据缺测有关联

最好,还是附上完整的代码吧,也没啥好保留的:

# -*- coding: utf-8 -*-
"""
Created on Sat Oct 22 20:50:09 2022@author: Administrator
"""
import cartopy.feature as cfeature
import numpy as np
import xarray as xr
from cartopy.mpl.ticker import LongitudeFormatter,LatitudeFormatter
import cmaps
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import matplotlib.ticker as mticker
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
from scipy import stats###############################################################################
olr_path = r'J:/olr.day.mean.nc'
sst_path = r'J:/sst.intep.nc'da1 = xr.open_dataset(sst_path).sortby('lat')
da2 = xr.open_dataset(olr_path).sortby('lat')sst = da1.sst.sel(lat=slice(-30,30),lon=slice(100,200))
olr = da2.olr.sel(lat=slice(-30,30),lon=slice(100,200),time=slice('2010','2010'))
############### calculate  ################################################
trend = np.zeros((sst.lat.shape[0],sst.lon.shape[0]))
p_value = np.zeros((sst.lat.shape[0],sst.lon.shape[0]))for i in range (0,sst.lat.shape[0]):for j in range (0,sst.lon.shape[0]):trend[i,j], intercept, r_value, p_value[i,j], std_err=stats.linregress(np.arange(1,366),sst[:,i,j])############################################################################################## plot #######################################################
lon = sst.lon.data
lat = sst.lat.data##############################################################################box = [100,200,-20,20]
xstep,ystep = 20,10
proj = ccrs.PlateCarree(central_longitude=180)
plt.rcParams['font.family'] = 'Times New Roman',##############################################################################fig = plt.figure(figsize=(8,7),dpi=200)
fig.tight_layout()
ax = fig.add_axes([0.1,0.2,0.8,0.7],projection = proj)
ax.set_extent(box,crs=ccrs.PlateCarree())
ax.coastlines('50m')
ax.set_xticks(np.arange(box[0],box[1]+xstep, xstep),crs=ccrs.PlateCarree())
ax.set_yticks(np.arange(box[2], box[3]+1, ystep),crs=ccrs.PlateCarree())
lon_formatter = LongitudeFormatter(zero_direction_label=False)#True/False
lat_formatter = LatitudeFormatter()
ax.xaxis.set_major_formatter(lon_formatter)
ax.yaxis.set_major_formatter(lat_formatter)
ax.spines[['right','left','top','bottom']].set_linewidth(1.1)
ax.spines[['right','left','top','bottom']].set_visible(True)
ax.set_xlabel('Lon',fontsize=14)
ax.set_title('Significance Test',fontsize=16,pad=8,loc='right')
ax.set_title('this is title',fontsize=16,pad=8,loc='left')
ax.tick_params(    which='both',direction='in',width=0.7,pad=5, labelsize=14,bottom=True, left=True, right=True, top=True)c = ax.contourf(lon,lat,trend,# levels=np.linspace(-0.008,0.008,17),# levels=np.linspace(-0.32,0.32,17),#levels=np.linspace(-0.012,0.012,17),extend = 'both', transform=ccrs.PlateCarree(),cmap=cmaps.BlueWhiteOrangeRed)c1b = ax.contourf(lon,lat, p_value,[np.nanmin(p_value),0.05,np.nanmax(p_value)],hatches=['.', None],colors="none", transform=ccrs.PlateCarree())
cb=plt.colorbar(c,shrink=0.85,pad=0.15,orientation='horizontal',aspect=25,)
cb.ax.tick_params(labelsize=10,which='both',direction='in',)
plt.show()#  save picture
# fig.savefig(r'D:\SST_OLR.png',format='png',dpi=500)############################################################################### xtick = np.arange(100, 200, 20)
# ytick = np.arange(-30,31, 10)
# gl=ax.gridlines(crs=ccrs.PlateCarree(), draw_labels=True,
#                 xlocs=[120,140,160,180,],
#                 ylocs=[-30,-20,-10,0,10,20,30,],
#                 x_inline=False,
#                 y_inline=False,
#                 linewidth=1.5, color='gray', alpha=0.5, linestyle='--',
#                   )
# gl.xlabels_top = False
# gl.ylabels_right = False
# gl.xlines = True
# plt.xlabel('Lon',fontsize=15)
# plt.ylabel('Lat',fontsize=15)
# gl.xformatter = LONGITUDE_FORMATTER
# gl.yformatter = LATITUDE_FORMATTER

python--海温、OLR数据分布做显著性检验,绘制空间分布并打点相关推荐

  1. python雷达图怎么做_PYTHON绘制雷达图代码实例

    这篇文章主要介绍了PYTHON绘制雷达图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.雷达图 import matplotlib.py ...

  2. Python地信专题 |基于geopandas的空间数据分析-深入浅出分层设色

    点击蓝字关注我,有干货领取! 本文对应代码和数据已上传至我的Github仓库: https://github.com/CNFeffery/DataScienceStudyNotes[1] 已发布: P ...

  3. python开发是做什么的-python开发工程师是做什么的

    python开发工程师是指运用Python进行软件开发的工程师岗位. Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python 的设计具有很强的可读性,相比其他语言经常 ...

  4. python开发工程师是干嘛的-python开发工程师是做什么的

    python开发工程师是指运用Python进行软件开发的工程师岗位. Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python 的设计具有很强的可读性,相比其他语言经常 ...

  5. 用python绘制柱状图标题-Python数据可视化:5种绘制柱状图表的方法(附源码)...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于数据Magic,作者我不是小样 前言 python里面有很多优秀的可 ...

  6. Python地信专题 | 基于geopandas的空间数据分析-文件IO篇

    本文对应代码和数据已上传至Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在上一篇文章中我们对geopandas中的坐标 ...

  7. python数据可视化的特点_python的数据分析到底是啥?python数据可视化怎么做?

    python是个啥?它一个强大的编程语言.数据分析是个啥?它一目了然,就是将数据进行分析,看看能得出什么结论.那python的数据分析到底是啥?其实就是通过这个语言将数据分析做出来,更加便捷化,更加速 ...

  8. Python使用Plotly绘图工具,绘制面积图

    今天我们来讲一下如何使用Python使用Plotly绘图工具,绘制面积图 绘制面积图与绘制散点图和折线图的画法类似,使用plotly graph_objs 中的Scatter函数,不同之处在于面积图对 ...

  9. 转载:python能用来做什么?

    python能用来做什么?这3大主要用途你一定要知道!(实用) 导读:如果你想学Python,或者你刚开始学习Python,那么你可能会问:"我能用Python做什么?" 这个问题 ...

最新文章

  1. jQueryEasyUI 的入门
  2. 【Android SOAP】基于第三方开源项目ksoap-android
  3. ant 编译java 项目_使用ant编译打包、部署简单的javaweb项目 --01
  4. 跳表SkipList
  5. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(9月24日-9月30日)
  6. boost::math::acosh用法的测试程序
  7. 如何为Apache JMeter开发插件(一)
  8. 计算机语言发展及未来方向
  9. scala与java混合编译出现的问题
  10. ireport 循环_ireport5.6.0分组显示
  11. 线性代数 【22】 抽象的向量空间
  12. onnx实现对pytorch模型推理加速
  13. 【React Native开发】React Native控件之RefreshControl组件具体解释(21)
  14. SPSS遇到缺失值怎么办?删除还是替换?【SPSS 067期】
  15. [原创]Linux系统启动过程分析
  16. linux 命令两个冒号,为什么两个冒号的错误消息作为bash中的命令(::)有三个冒号,但是一个冒号没有输出?...
  17. oracle operation_type,案例:Oracle报错performing DML/DDL operation over object in bin解决办法
  18. EXCEL表格序列号
  19. 电磁场与仿真软件(28)
  20. 力天创见客流统计设备应用分析

热门文章

  1. 人脸识别技术在智慧景区的应用有哪些?
  2. 寓言故事--授人以鱼不如授人以渔
  3. 人物 | 播客本质是社群—「津津乐道」专访
  4. 2021年化工自动化控制仪表报名考试及化工自动化控制仪表找解析
  5. 学计算机的个人评价,计算机*学生的自我评价
  6. 【Clemetine】基于判别分析的电信客户分类
  7. 详谈Python爬虫代理设置
  8. vcard java_Java VCard.save方法代码示例
  9. 快速判断时间复杂度和空间复杂度
  10. 过完年想要元气满满?赶紧看看这些VR AR大事件回个血