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

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: lsucky

[作图] 已解决:NCL绘制wrfout 垂直剖面横坐标转换和设置

[复制链接]

新浪微博达人勋

发表于 2017-1-8 23:24:12 | 显示全部楼层
fspan里头的0.1应该是15吧,代表从112.4到113.8之间一共15个数,这样生成的就是15个间隔0.1的数,另外res@tmXBLabels 里头也得把15个对应好
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-1-8 23:40:59 | 显示全部楼层
举个例子:
      res@tmXBMode = "Explicit"
      res@tmXBValues = fspan(119.0,120.0,6)
      res@tmXBLabels = (/"119.0~S~o~N~E", "119.2~S~o~N~E", \
                         "119.4~S~o~N~E", "119.6~S~o~N~E", \
                         "119.8~S~o~N~E", "120.0~S~o~N~E"/)
出来的图是这样的: sp_tprs.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-1-9 10:16:04 | 显示全部楼层
pandasp1213 发表于 2017-1-8 23:40
举个例子:
      res@tmXBMode = "Explicit"
      res@tmXBValues = fspan(119.0,120.0,6)

我明白了~谢谢你!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-14 17:00:38 | 显示全部楼层
这个厉害,感谢楼主的分享。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-5-19 09:41:12 | 显示全部楼层
还是没太懂啊……
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-7-24 15:41:31 | 显示全部楼层
请问你那个“leveler”属性是设置的哪个呢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-7-24 15:43:47 | 显示全部楼层
我的脚本如下
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRF_contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
;********************************************
begin
  a = addfile("wrfout_d01_2015-08-08_12_00_00","r")
  t = wrf_user_getvar(a,"rh",0)
  p  = wrf_user_getvar(a,"pressure",0)
  ;p=(/1000,850,700,600,500,400,300,250,200,150,100,70,50,30,10/)
  ;printVarSummary(p)
  lon= wrf_user_getvar(a,"XLONG",0)
   
; Plot a cross session that run from point A to point B
  loc1    = wrf_user_latlon_to_ij(a,26,116)
  loc2    = wrf_user_latlon_to_ij(a,26,124)
  plane = new(4,float)
  plane=(/loc1(1),loc2(1), loc1(0),loc2(0)/)     ; start x;y & end x;y point
  t_plane = wrf_user_intrp3d(t,p,"v",plane,90.,True)
  ;printVarSummary(t_plane)
  p_plane = wrf_user_intrp3d(p,p,"v",plane,90.,True)
   ;printVarSummary(p_plane)
  lon_plane = wrf_user_intrp2d(lon,plane,90.,True)
  ; printVarSummary(lon_plane)
  t_plane!0="level"
  t_plane&level =p_plane(:,0)
  ;t_plane&level = (/1000,850,700,600,500,400,300,250,200,150,100,70,50,30,10/)
  t_plane&level@units="hPa"
  t_plane!1="lon"
  t_plane&lon = lon_plane
  t_plane@units="C"
  printVarSummary(t_plane)
; ===========================
  wks   = gsn_open_wks ("png", "ctl-vertical-temp" )          ; open workstation
  res                      =True
  res@tiMainString         = "Temperature at vertical levels"        ; title
  res@cnLevelSelectionMode = "ManualLevels"        ; manual contour levels
  res@cnLevelSpacingF      = 10                   ; contour interval
  res@cnMinLevelValF       = 200.                  ; min level
  res@cnMaxLevelValF       = 350.                  ; max level
  res@cnLineLabelsOn       = True                  ; turn on line labels
  res@cnFillOn             = True                  ; turn on color fill
  res@cnFillPalette        = "BlWhRe"              ; set color map  
; Options for XY Plots   
    res@tiYAxisString           = "Level(hPa)"
    ;res@cnMissingValPerimOn     = True
    res@cnMissingValFillColor   = 0
    res@cnMissingValFillPattern = 11
    res@tmYLMode                = "Explicit"
    ;res@tmYLValues              = fspan(100,1000,100)     ; Create tick marks
    res@tmYLLabels = (/"1000","850","700","600","500","400","300","250","200","150","100","70","50","30","10"/)
        res@tmXBMode                = "Explicit"
        res@tmXBValues = fspan(116,124,5)
    res@tmXBLabels = (/"116","118","120","122","124"/)
;if(any(ismissing(t_plane))) then
    ;print("Your data is all missing. Cannot create plot.")
; else
   plot = gsn_csm_pres_hgt(wks,t_plane,res)
  ;end if
  end
结果出错,显示:
fatal:The result of the conditional expression yields a missing value. NCL can not determine branch, see ismissing function
fatal:["Execute.c":8578]:Execute: Error occurred at or near line 12154 in file
$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl
fatal:["Execute.c":8578]:Execute: Error occurred at or near line 59 in file ctl-div-cross.ncl
59行是plot = gsn_csm_pres_hgt(wks,t_plane,res)
你知道什么原因吗
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-7-25 11:09:18 | 显示全部楼层
爱地理不爱物理 发表于 2017-7-24 15:41
请问你那个“leveler”属性是设置的哪个呢

p_plane
使用p_plane = wrf_user_intrp3d(.....)
得到
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-7-25 11:11:15 | 显示全部楼层
爱地理不爱物理 发表于 2017-7-24 15:43
我的脚本如下
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/ ...

怎么这么巧,
我昨天换了个wrfout用这个脚本的时候也出现了这个问题,目前还没解决呢~解决了咱互通一下吧
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-7-25 15:27:57 | 显示全部楼层
lsucky 发表于 2017-7-25 11:11
怎么这么巧,
我昨天换了个wrfout用这个脚本的时候也出现了这个问题,目前还没解决呢~解决了咱 ...

后来我同学帮我看了下,你可以输出print(p_plane)或者print(要画的变量&level)看一下,靠近地面的有几层是缺测的,最后画的时候选不是缺测的气压层画,比如我这样plot = gsn_csm_pres_hgt(wks,sd_plane(7:94,:),res),而且每个wrfout里面缺测的气压层次可能是不一样的,最好每画一个你都先查看下level
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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