- 积分
- 4111
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2021-1-14
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 guoguohh 于 2022-4-19 11:30 编辑
在我自己不停的尝试+搜索下,三个小时内解决了,原来有大佬已经解决过这样的问题,脑子太累的情况下都不知道搜索“打点问题”这个关键词,一直看的是显著性检验的内容,我好蠢/(ㄒoㄒ)/~~
发个帖子就当留个总结吧,给大家做个参考
解决方法见:NCL打点问题-编程作图-气象家园_气象人自己的家园 (06climate.com)
按照这个帖子给的方法自己试了试,把
sres@cnLevelSelectionMode = "ExplicitLevels"
sres@cnLevels = (/-0.6313545,0.5914669/) ;这两个值是通过了95%显著性检验的相关系数的最值
这两行加进去就得出的图和第一种方法一样了,也知道了目前这个shade函数不被推荐使用了,
第一种方法我是按照书上《ncl数据处理和绘图实习教程》做的,还是教材香啊
====================================================================================
各位大佬们好,在显著性检验打点的时候找了两个方法,但是出来的图有一定的细微的差别
ts是我的指数(一维时间序列)
ccr是我的相关系数(二维)
;显著性打点
n = dimsizes(ts)
df=n-2
t = ccr*sqrt((n-2)/(1-ccr^2)) ;t检验
p = student_t(t, df) ;概率值
psig = 0.05 ; test significance level
copy_VarMeta(ccr(:,:), p(:,:))
p= where(p.gt.0.05, p@_FillValue, p) ;大于0.05的p值设为缺测值返回给p(图1方法)
ccr_test = where(p.le.0.05, ccr, ccr@_FillValue);用where函数返回通过显著性的相关系数值方法(图2方法)
copy_VarMeta(ccr(:,:), ccr_test(:,:))
ccr_max = max(ccr_test);即在最大值与最小值之间的值是通过显著性检验的。
ccr_min = min(ccr_test)
图1:利用等值线图直接绘制统计量小于0.05区域
rest=res
rest@cnLevelSelectionMode="ExplicitLevels"
rest@cnLevels=(/0.05/)
rest@cnFillPalette="GMT_gray"
rest@cnFillColors = (/1,-1/)
rest@cnFillPattern =17
rest@cnFillScaleF=0.5
rest@cnInfoLabelOn=False
rest@lbLabelBarOn=False
plot=gsn_csm_contour(wks,p,rest)
图2:参考NCL对变量场相关系数的显著性检验及打点处理问题-编程作图-气象家园_气象人自己的家园 (06climate.com)找到统计量小于0.05对应的相关系数的最大值和最小值,利用gsn_contour_shade(plot,x_min,x_max,opt)得出图
sres = True
sres@gsnDraw = False
sres@gsnFrame = False
sres@cnLineLabelsOn = False
sres@cnLinesOn = False
sres@cnInfoLabelOn = False
sres@cnFillOn = False
sres@lbLabelBarOn = False
sres@cnInfoLabelOn = False
sres@cnFillScaleF =0.5
sres@gsnLeftString=" "
sres@gsnRightString=" "
opt = True
opt@gsnShadeFillType = "pattern"
opt@gsnShadeMid = 17
plot1 = gsn_csm_contour(wks,ccr_test,sres)
plot1 = gsn_contour_shade(plot1,ccr_min,ccr_max,opt)
两个图大体上是相同的,但是在长江流域部分图二没有点,但图一有点,想问问我该用哪种方法,感觉两个思路应该都正确,不知道为什么出的图有些不一样
|
-
-
图1
|