python--海温、OLR数据分布做显著性检验,绘制空间分布并打点
使用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数据分布做显著性检验,绘制空间分布并打点相关推荐
- python雷达图怎么做_PYTHON绘制雷达图代码实例
这篇文章主要介绍了PYTHON绘制雷达图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.雷达图 import matplotlib.py ...
- Python地信专题 |基于geopandas的空间数据分析-深入浅出分层设色
点击蓝字关注我,有干货领取! 本文对应代码和数据已上传至我的Github仓库: https://github.com/CNFeffery/DataScienceStudyNotes[1] 已发布: P ...
- python开发是做什么的-python开发工程师是做什么的
python开发工程师是指运用Python进行软件开发的工程师岗位. Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python 的设计具有很强的可读性,相比其他语言经常 ...
- python开发工程师是干嘛的-python开发工程师是做什么的
python开发工程师是指运用Python进行软件开发的工程师岗位. Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python 的设计具有很强的可读性,相比其他语言经常 ...
- 用python绘制柱状图标题-Python数据可视化:5种绘制柱状图表的方法(附源码)...
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于数据Magic,作者我不是小样 前言 python里面有很多优秀的可 ...
- Python地信专题 | 基于geopandas的空间数据分析-文件IO篇
本文对应代码和数据已上传至Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在上一篇文章中我们对geopandas中的坐标 ...
- python数据可视化的特点_python的数据分析到底是啥?python数据可视化怎么做?
python是个啥?它一个强大的编程语言.数据分析是个啥?它一目了然,就是将数据进行分析,看看能得出什么结论.那python的数据分析到底是啥?其实就是通过这个语言将数据分析做出来,更加便捷化,更加速 ...
- Python使用Plotly绘图工具,绘制面积图
今天我们来讲一下如何使用Python使用Plotly绘图工具,绘制面积图 绘制面积图与绘制散点图和折线图的画法类似,使用plotly graph_objs 中的Scatter函数,不同之处在于面积图对 ...
- 转载:python能用来做什么?
python能用来做什么?这3大主要用途你一定要知道!(实用) 导读:如果你想学Python,或者你刚开始学习Python,那么你可能会问:"我能用Python做什么?" 这个问题 ...
最新文章
- jQueryEasyUI 的入门
- 【Android SOAP】基于第三方开源项目ksoap-android
- ant 编译java 项目_使用ant编译打包、部署简单的javaweb项目 --01
- 跳表SkipList
- Silverlight/Windows8/WPF/WP7/HTML5周学习导读(9月24日-9月30日)
- boost::math::acosh用法的测试程序
- 如何为Apache JMeter开发插件(一)
- 计算机语言发展及未来方向
- scala与java混合编译出现的问题
- ireport 循环_ireport5.6.0分组显示
- 线性代数 【22】 抽象的向量空间
- onnx实现对pytorch模型推理加速
- 【React Native开发】React Native控件之RefreshControl组件具体解释(21)
- SPSS遇到缺失值怎么办?删除还是替换?【SPSS 067期】
- [原创]Linux系统启动过程分析
- linux 命令两个冒号,为什么两个冒号的错误消息作为bash中的命令(::)有三个冒号,但是一个冒号没有输出?...
- oracle operation_type,案例:Oracle报错performing DML/DDL operation over object in bin解决办法
- EXCEL表格序列号
- 电磁场与仿真软件(28)
- 力天创见客流统计设备应用分析