爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 14892|回复: 8

[经验总结] 【已解决】ncl 降水 空间相关 显著性打点

[复制链接]

新浪微博达人勋

发表于 2021-9-27 17:39:25 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

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)


两个图大体上是相同的,但是在长江流域部分图二没有点,但图一有点,想问问我该用哪种方法,感觉两个思路应该都正确,不知道为什么出的图有些不一样




coreofpre1.png

图1

图1
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2021-10-8 23:35:00 | 显示全部楼层
本帖最后由 又又又加零 于 2021-10-9 08:43 编辑

 
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2022-2-23 21:24:30 | 显示全部楼层
我觉得可以调试一下点的密度和大小或颜色,否则实在看不清楚
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-2-24 09:51:15 | 显示全部楼层
阿吉木柯 发表于 2022-2-23 21:24
我觉得可以调试一下点的密度和大小或颜色,否则实在看不清楚

好滴,谢谢建议~
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-3-22 20:33:00 | 显示全部楼层
我按照您的图1设置死活打不上点是怎么回事呢?读数据也有通过显著性检验的有警告但没有报错
warning:Attempt to reference attribute (_FillValue) which is undefined
warning:ContourPlotSetValues: Data values out of range of levels set by EXPLICITLEVELS mode
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-3-23 10:21:39 | 显示全部楼层
本帖最后由 guoguohh 于 2022-3-23 10:24 编辑
张张会长大 发表于 2022-3-22 20:33
我按照您的图1设置死活打不上点是怎么回事呢?读数据也有通过显著性检验的有警告但没有报错
warning:Attem ...

你按照警告对应着一条一条试着改吧 我没遇到过这种情况
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-5-22 17:17:08 | 显示全部楼层
图一中的
rest@cnLevels      = (/0.05/)
rest@cnFillPalette = "GMT_gray"
rest@cnFillColors  = (/1,-1/)
似乎没必要,p= where(p.gt.0.05, p@_FillValue, p)已经挑出了P的范围
可以加上
rest@cnMonoFillColor = True
rest@cnFillColor         = "black"
改变点的颜色
ccr_test = where(p.le.0.05, ccr, ccr@_FillValue)中的.le.改成.lt.可能更准确点
检验也可以用rtest函数
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-6-20 16:40:30 | 显示全部楼层
有人知道缺测也被打点是什么原因造成的嘛?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2024-1-25 16:51:48 | 显示全部楼层
张张会长大 发表于 2022-3-22 20:33
我按照您的图1设置死活打不上点是怎么回事呢?读数据也有通过显著性检验的有警告但没有报错
warning:Attem ...

您好我也遇到了这个问题,请问你解决了吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表