请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 48134|回复: 34

[作图] NCL绘制泰勒图

[复制链接]

新浪微博达人勋

发表于 2020-5-11 18:00:01 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 youngman 于 2020-5-21 09:17 编辑

泰勒图多用于评估模式结果相对于参考值(控制实验,OBS,再分析资料)的区别(相关性,方差,bias),当然,这个评估指标也可自己定义,可以评估多个不同case和不同变量。
NCL绘制最基本的泰勒图需要计算两个量:ratio cc
ratio是方差之比:Case_Variance/Reference_Variance
cc是相关系数:cross correlation coef of Case to Reference
由这两个值定义泰勒图坐标系一个点的位置,然后绘图。
NCL绘制泰勒图另外需要load一个图像框架函数:taylor_diagram.ncl(见官网),参考官网一个简单绘图示例:
  1. load "./source_taylor/taylor_diagram.ncl"
  2. ; Assume the following have already been computed:
  3. ;   _ratio are the ratio:  Case_Variance/Reference_Variance
  4. ;   _cc    are the cross correlation coef of Case to Reference
  5. ; All ratio values must be between 0 and 1.65 (change in taylor_diagram.ncl)
  6. ; All cross correlation values are 0.0 to 1.0 [inclusive]
  7. ;-------------------------------------------------------------
  8. ; Cases [Model]
  9. case      = (/"Case A", "Case B"/)
  10. nCase     = dimsizes(case)                  ; # of Cases [Cases]
  11. ; variables compared
  12. var       = (/"SLP","Tsfc","Prc","Prc 30S-30N","LW","SW", "U300", "Guess"/)
  13. nVar      = dimsizes(var)                   ; # of Variables
  14. ; "Case A"
  15. CA_ratio   = (/1.230, 0.988, 1.092, 1.172, 1.064, 0.966, 1.079, 0.781/)
  16. CA_cc      = (/0.958, 0.973, 0.740, 0.743, 0.922, 0.982, 0.952, 0.433/)
  17. ; "Case B"
  18. CB_ratio   = (/1.129, 0.996, 1.016, 1.134, 1.023, 0.962, 1.048, 0.852 /)
  19. CB_cc      = (/0.963, 0.975, 0.801, 0.814, 0.946, 0.984, 0.968, 0.647 /)
  20. ; Put ratios and pattern correlations into arrays for plotting
  21. ratio      = new((/nCase, nVar/),typeof(CA_cc))
  22. cc         = new((/nCase, nVar/),typeof(CA_cc))
  23. ratio(0,:) = CA_ratio
  24. ratio(1,:) = CB_ratio
  25. cc(0,:)    = CA_cc
  26. cc(1,:)    = CB_cc

  27. wks = gsn_open_wks("png","taylor1")
  28. res                     = True
  29. res@tiMainString        = "Example"
  30. res@caseLabels          = case
  31. res@varLabels           = var
  32. res@varLabelsYloc       = 1.5                ; Move location of variable labels [default 0.45]
  33. res@Colors              = (/"red","blue"/)
  34. res@Markers             = (/16, 16/)         ; make all solid fill
  35. res@markerTxYOffset     = 0.04               ; offset btwn marker & label
  36. res@gsMarkerSizeF       = 0.01               ; marker size
  37. res@txFontHeightF       = 0.015              ; text size
  38. res@stnRad              = (/0.5, 1.5/)       ; additional standard radii
  39. res@ccRays              = (/0.6, 0.9/)       ; correlation rays
  40. res@centerDiffRMS       = True               ; RMS 'circles'
  41. plot = taylor_diagram(wks, ratio, cc, res)
复制代码
taylor1.png taylor_diagram.ncl (18.52 KB, 下载次数: 82)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2020-7-29 16:08:31 | 显示全部楼层
Datian 发表于 2020-7-29 09:42
楼主您好,请问在计算ratio和cc之前需要对原始数据进行标准化处理吗?

一般不需要吧,看你需求了,标准化可能是为了在不同量级的数据之间比较,模拟结果一般和观测量级不会差多少。另外NCL在计算相关系数时默认取距平了
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

发表于 2020-12-30 21:37:44 | 显示全部楼层
求助!想请问一下泰勒图如果想画半圆,需要改脚本里的哪些参数呢,我看到官网里有半圆的程序,但是那个是画三个变量的,我只有两个变量,但是变量有负值,需要画半圆。谢谢!
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2020-6-10 23:03:04 | 显示全部楼层
楼主,你好。请问如果想把图上的1-8数字换成不同的标记表示(比方说,圆形、三角形、矩形等等),该怎么设置啊?在官网也没找到例子,请指教!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-6-11 08:57:46 | 显示全部楼层
小鸣REN 发表于 2020-6-10 23:03
楼主,你好。请问如果想把图上的1-8数字换成不同的标记表示(比方说,圆形、三角形、矩形等等),该怎么设 ...

修改res@Markers =
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-6-12 09:19:30 | 显示全部楼层

我试了,不行。您可能没明白我的意思,我是想画类似下图这样的,用不同的marker代表不同模式,然后不同颜色代表不同变量。但是我按照ncl官网的教程画出了只能是数字编号代表不同模式,那样看着比较乱。第二张图是我画的,都叠在一起了,看不清。
泰勒.png
111.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-6-13 00:02:15 | 显示全部楼层
绘制泰勒图时,可以生成CAM Metrics的一个表格,请问楼主知道这代表什么意思,要怎么分析呢?谢谢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-6-13 10:11:58 | 显示全部楼层
小鸣REN 发表于 2020-6-12 09:19
我试了,不行。您可能没明白我的意思,我是想画类似下图这样的,用不同的marker代表不同模式,然后不同颜 ...

在taylor_diagram.ncl脚本366行:ptRes@txFontHeightF 调为0,下面3行注释掉,可以不显示数字,在你的脚本里把 varLabels 相关行注释掉,可以不显示关于var的label注释。然后把数组模式维和变量维交换一下,应该就可以实现了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-6-13 10:14:49 | 显示全部楼层
simple. 发表于 2020-6-13 00:02
绘制泰勒图时,可以生成CAM Metrics的一个表格,请问楼主知道这代表什么意思,要怎么分析呢?谢谢

没用过这个功能,不太清楚~ 什么样的表格?贴一下看看?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-6-13 19:57:36 | 显示全部楼层
youngman 发表于 2020-6-13 10:14
没用过这个功能,不太清楚~ 什么样的表格?贴一下看看?

C:\Users\L\Desktop\微信图片_20200603214603.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-6-13 20:04:07 | 显示全部楼层
微信图片_20200603214603.png 就是这个表格,刚才传错了。。。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-6-14 15:09:35 | 显示全部楼层
youngman 发表于 2020-6-13 10:11
在taylor_diagram.ncl脚本366行:ptRes@txFontHeightF 调为0,下面3行注释掉,可以不显示数字,在你的脚 ...

谢谢楼主,我试一下
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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