爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15635|回复: 14

[作图] 求助!NCL中使用gsn_panel 处理两个叠加的矢量场出错。

[复制链接]
发表于 2013-4-28 21:59:08 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 hxyj 于 2013-4-28 23:25 编辑

这是我使用的脚本,采用NCL6.1.2自带的脚本和数据。
;   - Using "overlay" to overlay contours and vectors on separate maps
;   - Paneling two plots vertically on a page
;
;************************************************
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"
;************************************************
begin
;************************************************
; read in netCDF file
;************************************************
  a     = addfile("$NCARG_ROOT/lib/ncarg/data/cdf/uv300.nc","r")
  u     = a->U(1,:,:)                             
  v     = a->V(1,:,:)
  speed = sqrt(u^2+v^2)
  copy_VarCoords(u,speed)                         ; copy coord vars to speed
;************************************************
; create plots
;************************************************
  wks = gsn_open_wks("X11","panel")               ; open a ps file
  gsn_define_colormap(wks,"gui_default")          ; choose colormap
  plot = new(2,graphic)                           ; create a plot array
;************************************************
; create plots
;************************************************
  res                     = True
  res@gsnDraw             = False           ; don't draw
  res@gsnFrame            = False           ; don't advance frame
  res@gsnLeftString       = "Speed"         ; change left string
  res@gsnRightString      = u@units         ; assign right string
  res@mpFillOn            = False           ; no map fill

  vecres                  = True            ; vector only resources
  vecres@gsnDraw          = False           ; don't draw
  vecres@gsnFrame         = False           ; don't advance frame

  vecres@vcRefMagnitudeF  = 20              ; define vector ref mag
  vecres@vcRefLengthF     = 0.045           ; define length of vec ref
  vecres@vcRefAnnoOrthogonalPosF = -.535    ; move ref vector into plot
  vecres@vcFillArrowsOn          = True
  vecres@vcFillArrowEdgeColor = "black"
  vecres@vcFillArrowFillColor = "green"

  plotA   = gsn_csm_vector_map_ce(wks,u(::4,::4),v(::4,::4),res)
  plotB   = gsn_csm_vector(wks,u(::4,::4),v(::4,::4),vecres)
  overlay(plotA,plotB)                      ; result will be plotA
  plot(0) = plotA                           ; now assign plotA to array

  plotC   = gsn_csm_vector_map_ce(wks,u(::4,::4),v(::4,::4),res)
  plotD   = gsn_csm_vector(wks,u(::4,::4),v(::4,::4),vecres)

  overlay(plotC,plotD)                      ; result is plotC
  plot(1) = plotC                           ; now assign plotC to array


  resP                = True                ; panel only resources
  resP@gsnMaximize    = True                ; maximize plots
  gsn_panel(wks,plot,(/2,1/),resP)          ; now draw as one plot

end

++++++++++++++++++++++++++++++++++++++++++++++++
              运行之后,出现如下错误。
++++++++++++++++++++++++++++++++++++++++++++++++


Copyright (C) 1995-2013 - All RightsReserved University Corporation for AtmosphericResearch NCARCommand Language Version 6.1.2 Theuse of this software is governed by a License Agreement. Seehttp://www.ncl.ucar.edu/ for more details.fatal:Variable (vc_monofillarrowcolor) isundefinedfatal:["Execute.c":8128]:Execute:Error occurred at or near line 1811 infile $NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.nclfatal:["Execute.c":8128]:Execute:Error occurred at or near line 5503 infile $NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.nclfatal:["Execute.c":8128]:Execute:Error occurred at or near line 6201 infile $NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.nclfatal:["Execute.c":8128]:Execute:Error occurred at or near line 63 infile wind6.ncl

如果把红色部分改为: gsn_csm_contour_map_ce, 就不会出错,可以运行下去。求高手帮忙解决,谢谢。

图片1.png
密码修改失败请联系微信:mofangbao
发表于 2013-4-28 22:36:15 | 显示全部楼层
我试了,貌似改成gsn_csm_contour_map_ce也不行吧,gsn_csm_contour_map_ce就不是用来画矢量场的,原例子是用风速大小的阴影图,叠加风向。不知道楼主是想两个什么样的场叠加
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-4-28 23:16:06 | 显示全部楼层
本帖最后由 hxyj 于 2013-4-28 23:26 编辑

非常感谢版主的回复,这么晚了,有时假期的晚上,真是不好意思,麻烦您了。我想画的是两张图,(a)和(b),即分别是求偏相关之后的850hPa风场,将检验场和原始相关场这两个矢量风场叠加在一起,所以我想用gsn_panel把他们放在一起。我已将示例图上传,请您查阅。感谢帮忙。
密码修改失败请联系微信:mofangbao
发表于 2013-4-29 11:12:32 | 显示全部楼层

两个要叠加的风场都用gsn_csm_vector就可以叠加了,然后分别设置他们箭头颜色,PS:你回复我要点回复啊,不是我进帖子看,我还不知道你回复了
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-4-29 16:41:34 | 显示全部楼层
尽头的尽头 发表于 2013-4-29 11:12
两个要叠加的风场都用gsn_csm_vector就可以叠加了,然后分别设置他们箭头颜色,PS:你回复我要点回复啊,不是 ...

感谢您的回复。呵呵,我不太清楚步骤,还请您原谅。放假了,您还在回帖。辛苦了。祝假期愉快!
密码修改失败请联系微信:mofangbao
发表于 2013-4-29 19:42:31 | 显示全部楼层
hxyj 发表于 2013-4-29 16:41
感谢您的回复。呵呵,我不太清楚步骤,还请您原谅。放假了,您还在回帖。辛苦了。祝假期愉快!

那你要加强学习下NCL的基本知识
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-4-29 20:12:13 | 显示全部楼层
尽头的尽头 发表于 2013-4-29 19:42
那你要加强学习下NCL的基本知识

您说的对,最近刚刚接触NCL,完全从零开始,有很多不懂的地方,确实要加强。谢谢您。
密码修改失败请联系微信:mofangbao
发表于 2013-4-29 21:18:44 | 显示全部楼层
hxyj 发表于 2013-4-29 20:12
您说的对,最近刚刚接触NCL,完全从零开始,有很多不懂的地方,确实要加强。谢谢您。

嗯,慢慢来,从那两本中文手册开始,再加上NCL官网和我们的气象家园,相信你很快就可以上手的
密码修改失败请联系微信:mofangbao
发表于 2013-11-1 22:36:35 | 显示全部楼层
你好,我想问一下你的偏相关是怎样计算的,NCL有没有函数直接计算偏相关呢???
谢谢
密码修改失败请联系微信:mofangbao
发表于 2013-12-2 20:39:01 | 显示全部楼层
long 发表于 2013-11-1 22:36
你好,我想问一下你的偏相关是怎样计算的,NCL有没有函数直接计算偏相关呢???
谢谢

貌似没有。用escorc求出各变量的相关来,然后自己做一个简单的代数运算就出来了。r124       =(r12-r14*r24)/sqrt((1-r14^2)*(1-r24^2))
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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