Taylor图[NCL版],超全代码版本

本文介绍了如何在NCL(NCARCommandLanguage)中使用代码生成Taylor图,包括计算方差比和相关系数,以及展示不同气候模型与参考数据的比较。作者分享了关键代码片段和示例,展示了如何处理缺失数据并创建图形。
摘要由CSDN通过智能技术生成

关于Taylor图NCL官网有代码的,懒得每次都找一遍,便再此记录下嘻嘻。

首先需要ratio和cc两个值,也就是方差之比和相关性系数。这里面由于站点数据缺少15:00数据,所以我先导出来了wrf.csv,手动筛选了下数据(别问为什么不用if直接循环,问就是懒得动脑子,Excel不香吗hhhhh。。。PS:等有空了会再出一个脚本纯享版~最近没空886~)

提前导入taylor_diagram.ncl到目录下,再load。官网有,可以自己下载。我这里也附上吧。

接下来上关键代码:

;**********************************
; taylor_4.ncl
;**********************************
;
; These files are loaded by default in NCL V6.2.0 and newer
; load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"   
; load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"  
;
; These files still have to be loaded manually
load "./taylor_diagram.ncl"
; load "./taylor_metrics_table.ncl"
;**********************************
begin
;**********************************
; Assume the following have already been computed:
;   _ratio are the ratio:  Case_Variance/Reference_Variance
;   _cc    are the cross correlation coef of Case to Reference
; In this example, these are derived for annual mean climatologies.
;**********************************

; Cases [Model]
  case      = (/ "QHD", "BD" ,"DL", "BZ" ,"YT", "CZ","TS", "TJ" /) 
  nCase     = dimsizes(case)                 ; # of Cases [Cases]

; variables compared
  var       = (/ "SLP","Tempreture" ,"Wind speed","Wind direction" /) 
  nVar      = dimsizes(var)                   ; # of Variables

; ; more info to be added [all are bogus]
;   source    = (/ "ERA40", "ERA40","GPCP" , "GPCP", "ERS" , "ERS", "ERA40", "BOGUS" \
;                , "NCEP",  "ERA40","ERA40", "NCEP", "NASA", "JMA", "JMA"  , "CAS"  /)
;ratio:方差之比
;cc:相关系数
; "Case A"                        
  CA_ratio   = (/1.01,1.107,1.001,0.955/)
  CA_cc      = (/0.833, 0.945,0.744, 0.558/)

; "Case B" 
  CB_ratio   = (/0.968, 0.937, 1.044, 1.085/)
  CB_cc      = (/0.969, 0.86, 0.822, 0.644/)

  CC_ratio   = (/1.044, 0.948, 0.803, 1.075/)
  CC_cc      = (/0.965, 0.914, 0.488, 0.781/)

; "Case B" 
  CD_cc   = (/0.816, 0.701, 0.628, 0.802/)
  CD_ratio   = (/1.115, 0.931, 0.957, 0.848/)

  CE_ratio   = (/1.266, 1.204, 0.925, 1.338/)
  CE_cc      = (/0.958, 0.889, 0.504, 0.631/)

; "Case B" 
  CF_ratio   = (/1.039, 1.157, 0.929, 0.885/)
  CF_cc      = (/0.973, 0.900, 0.822, 0.718/)

  CG_cc  = (/0.982, 0.914, 0.652, 0.827/)
  CG_ratio   = (/1.181, 1.028, 0.917, 1.079/)

; "Case B" 
  CH_ratio   = (/1.133, 0.820, 1.099, 1.167/)
  CH_cc      = (/0.922, 0.732, 0.707, 0.738/)

; arrays to be passed to taylor_diagram. It will calculate the x xnd y coordinates.
  ratio      = new ((/nCase, nVar/),typeof(CA_cc) )  
  cc         = new ((/nCase, nVar/),typeof(CA_cc) ) 

  ratio(0,:) = CA_ratio 
  ratio(1,:) = CB_ratio
  ratio(2,:) = CC_ratio 
  ratio(3,:) = CD_ratio
  ratio(4,:) = CE_ratio 
  ratio(5,:) = CF_ratio
  ratio(6,:) = CG_ratio 
  ratio(7,:) = CH_ratio


  cc(0,:)    = CA_cc 
  cc(1,:)    = CB_cc
  cc(2,:)    = CC_cc 
  cc(3,:)    = CD_cc
  cc(4,:)    = CE_cc 
  cc(5,:)    = CF_cc
  cc(6,:)    = CG_cc 
  cc(7,:)    = CH_cc

;**********************************
; create plot
;**********************************
  ; varSource = var +"_"+ source              ; add extra info [*not* required]

  ty_opt   = True                           ; taylor diagram with options
        
  ty_opt@Markers       = (/16, 16,16, 16,16, 16,16, 16/)         ; make all solid fill
  ty_opt@Colors        = (/"red", "blue" ,"PeachPuff", "black", "SlateBlue",  \
             "Khaki", "OliveDrab","BurlyWood"/)          
  ty_opt@varLabels     = var
  ty_opt@caseLabels    = case

  ty_opt@varLabelsYloc = 1.5                ; Move location of variable labels [default 0.45]
  ;ty_opt@caseLabelsYloc = 5.0
  ty_opt@caseLabelsFontHeightF = 0.06       ; make slight larger   [default=0.12 ]
  ty_opt@varLabelsFontHeightF  = 0.016      ; make slight smaller  [default=0.013]
 
  ;ty_opt@tiMainString  = "Annual"           ; title
  ty_opt@stnRad        = (/ 0.5, 1.5 /)     ; additional standard radii
  ty_opt@ccRays        = (/ 0.6, 0.9 /)     ; correllation rays
  ty_opt@centerDiffRMS = True               ; RMS 'circles'

  wks   = gsn_open_wks("png","taylor.000001")      ; send graphics to PNG file
  plot  = taylor_diagram(wks,ratio,cc,ty_opt)

nc转csv不在此多叙述了,网上一大堆,需要的babe也可以联系我~

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值