爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 22120|回复: 11

ncl设置缺省值,画图导致数据缺失

[复制链接]
发表于 2014-4-25 11:10:22 | 显示全部楼层 |阅读模式
NCL
系统平台: xp
问题截图: -
问题概况: txt数据中有好多0值,设置0值缺省后,会使得附近的值也缺失
我看过提问的智慧: 看过
自己思考时长(天): 3

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

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

x
QQ图片20140425085543.jpg 1问题图 QQ图片20140425085520.jpg 2设置缺省时画出来的图,
具体的脚本
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
begin
;************************************************
;               Define constants
;************************************************
data  = asciiread("grug.txt",(/96,144/),"float")
data!0 = "lat"   
data!1 = "lon"   
data&lat  = fspan(-90,90,96)
data&lon = fspan(0,357.5,144)
  wks = gsn_open_wks("ps","color")                 ; open a ps file
  gsn_define_colormap(wks,"BlWhRe")                ; choose colormap

  res                      = True                  ; plot mods desired
  res@tiMainString         = "BlWhRe Colormap"     ; title
  res@cnFillOn             = True                  ; turn on color fill
  res@gsnSpreadColors      = True                  ; use full range of colors
  res@cnLinesOn            = False
res@cnLevelSelectionMode = "ExplicitLevels"   ; set explicit contour levels
  res@cnLevels            = (/-0.56,-0.44,-0.38,0,0.38,0.44,0.56/)
  plot = gsn_csm_contour_map_ce(wks,data, res)        ; create plot
end

密码修改失败请联系微信:mofangbao
发表于 2014-4-25 11:53:19 | 显示全部楼层
图和脚本没有啥问题啊?楼主的意思是?
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-4-25 14:21:33 | 显示全部楼层
longlivehj 发表于 2014-4-25 11:53
图和脚本没有啥问题啊?楼主的意思是?

你看北美,澳大利亚,和南美有些地方的值没有了啊,原来填色的范围大一些
密码修改失败请联系微信:mofangbao
发表于 2014-4-25 14:35:09 | 显示全部楼层
chongzika 发表于 2014-4-25 14:21
你看北美,澳大利亚,和南美有些地方的值没有了啊,原来填色的范围大一些

NCL 版本是?
密码修改失败请联系微信:mofangbao
发表于 2014-4-25 14:43:31 | 显示全部楼层
chongzika 发表于 2014-4-25 14:21
你看北美,澳大利亚,和南美有些地方的值没有了啊,原来填色的范围大一些

哦,明白了!
这个可能跟等值线算法有关系。打个比方,原来是0的位置,可能会有比0大一点的等值线从上面穿过。但设置为missing value之后,等值线无论如何都不会走上面了。
楼主可以把填充方式设为"RasterFill",然后比较指定missing value前后的图,看看是不是一致的。
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-4-25 15:25:58 | 显示全部楼层
longlivehj 发表于 2014-4-25 14:43
哦,明白了!
这个可能跟等值线算法有关系。打个比方,原来是0的位置,可能会有比0大一点的等值线从上面 ...

QQ截图20140425152226.png 改完后成这样子了,有没有一种办法跳过0值去画图,因为我的0值太多了,设成缺测可能不合适
密码修改失败请联系微信:mofangbao
发表于 2014-4-25 20:34:29 | 显示全部楼层
chongzika 发表于 2014-4-25 15:25
改完后成这样子了,有没有一种办法跳过0值去画图,因为我的0值太多了,设成缺测可能不合适

呵呵,这个是没有设缺测的吧!
你可以比较一下,把0设为缺测后,就不会出现你说的非0区域发生变化了。也就是说,是等值线生成算法导致的,直接栅格填充就木有问题。

如果要跳过0,只能设置成missing value!
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-4-25 21:18:22 | 显示全部楼层
本帖最后由 chongzika 于 2014-4-25 21:59 编辑
longlivehj 发表于 2014-4-25 20:34
呵呵,这个是没有设缺测的吧!
你可以比较一下,把0设为缺测后,就不会出现你说的非0区域发生变化了。也 ...
opt = True
opt@gsnShadeFillType = "pattern"      ; pattern fill
opt@gsnShadeHigh = 2                  ; use pattern #2
plot = gsn_contour_shade(plot,-0.1,0.1,opt)
end这样设置就6楼的图
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-4-25 21:22:25 | 显示全部楼层
本帖最后由 chongzika 于 2014-4-25 22:00 编辑
longlivehj 发表于 2014-4-25 20:34
呵呵,这个是没有设缺测的吧!
你可以比较一下,把0设为缺测后,就不会出现你说的非0区域发生变化了。也 ...
data@_FillValue  =  -999.0
data= where( data .ne. 0 , data , data@_FillValue)
end这样设置的图如下
QQ截图20140425211919.png 我还没有用过缺测不太懂怎么设置,这张图显得分辨率太低了

密码修改失败请联系微信:mofangbao
发表于 2014-4-25 21:26:57 | 显示全部楼层
chongzika 发表于 2014-4-25 21:22
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscript ...

嗯,果然是这样。颜色区面积不会变了。
如果觉得马赛克感觉太强,可以考虑用 cnRasterSmoothingOn = True,会有所改善。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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