爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9880|回复: 6

在ncl 画图中的一些不受控制的问题

[复制链接]
发表于 2014-2-26 10:27:45 | 显示全部楼层 |阅读模式

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

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

x
想请教一个问题,就是当我单独画等值线图的时候所有的图等值线都显示良好。但是当我把等值线图和阴影图画在一起的时候,有几幅图就出现了不受控制的情况,我不知道这是怎么回事。我附上了ncl脚本请诸位帮忙看看
sst_100year_avg_new.jpg
QQ截图20140226101939.png
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-2-26 11:31:25 | 显示全部楼层

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/csm/shea_util.ncl"
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/wrf/WRFUserARW.ncl"

;=================================================================================
begin

  FILES1 = systemfunc (" ls -1 "+"*.nc ")        ;从这里开始到下面都是读取文件的命令
  numFILES1 = dimsizes(FILES1)
  ;print(FILES1)

  FILES2 = systemfunc (" ls -1 /nuist/p/work/lkl/the_first_paper_data/100year_deviation/"+"*.nc ")        ;′óa¿aʼμ½Ïö¼ê¶á¡Î¼tμÄü
  numFILES2 = dimsizes(FILES2)
  ;print(FILES2)
  
  type = "pdf"     ;开始指定文件输出的类型

  wks = gsn_open_wks(type,"sst_100year_climatecontour_and_deviationshade")  
  plot1 = new(24,graphic)                                    
  plot2 = new(24,graphic)
       
        res2 =True
        res2@gsnMaximize          = False
    res2@gsnDraw              = False              ; don't draw
    res2@gsnFrame             = False              ; don't advance frame
       
        res=True
        res@gsnMaximize          = False
    res@gsnDraw              = False              ; don't draw
    res@gsnFrame             = False              ; don't advance frame

        res@gsnAddCyclic=False
        res@tiMainFontHeightF = 0.035
       
        res@mpCenterLonF           = 180
       
         res@cnInfoLabelOn       = False
         res@lbLabelBarOn        = False
       
         res@mpCenterLonF           = 180
;=====================================================================================

a1= addfile(FILES1(0),"r")
        tos1=a1->tos(:,:,:)
        tos_ave1=dim_avg_Wrap( tos1(lat|:, lon|:, time|:) )

       
         lon=a1->lon
         lat=a1->lat
     tos_ave1@units=" "
         tos_ave1@long_name="  "
         res@mpMinLonF              = min(tos1&lon)
         res@mpMinLatF              = min(tos1&lat)
         res@mpMaxLatF              = max(tos1&lat)
     res@mpMaxLonF              = max(tos1&lon)
         res@cnLevelSelectionMode = "ExplicitLevels"
     res@cnLevels             = (/ -8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6 /)
         res@cnFillOn             =False
         res@cnLinesOn   = True
         res@cnInfoLabelOn       = False
       
         res@mpAreaMaskingOn = True
         res@mpLandFillColor        = "gray"        
         res@mpInlandWaterFillColor = "blue"
         
         res@tmYLLabelFontHeightF= 0.03             ;设置字体大小,设置一个y或x就可以把全部的字体重新进行设置
         res@tmXBLabelFontHeightF= 0.03
     res@tmBorderThicknessF  = 0.5  
         res@tmXBMajorThicknessF  = 1   ;Sets linewidth scale factor for bottom major tick marks.ֻ¸ıäÏÖ¿̶èß         res@tmYLMajorThicknessF  =1
         
         res@gsnMinorLatSpacing  =2
         res@gsnMinorLonSpacing  =2
         aa=strlen(FILES1(0))
     res@tiMainString = str_get_cols(FILES1(0),0,aa-5)
         plot1(0)=gsn_csm_contour_map_ce(wks,tos_ave1(:,:),res)
          delete([/tos_ave1/])          
        delete([/tos1/])   
            delete(lat)
            delete(lon)                                                
                delete(res@mpMinLonF)
            delete( res@mpMinLatF)      
            delete(res@mpMaxLatF )      
        delete( res@mpMaxLonF)

    do i =1,numFILES1-1            ; TIME LOOPÕ¸öîҪμģ¬¿aʼѭ»·¶áë¼t£¬nclê′ó¿aʼ£¬μ½Î¼t¼Dù¼têê¼õá   
    a1 = addfile(FILES1(i),"r")         ;°ÑùèμÄļtдèһ¸ööμtÖ       
        a2 = addfile(FILES2(i-1),"r")
       
        tos1=a1->tos(:,:,:)
        tos_ave1=dim_avg_Wrap( tos1(lat|:, lon|:, time|:) )
        tos2=a2->tos(:,:,:)
        tos_ave2=dim_avg_Wrap( tos2(lat|:, lon|:, time|:) )
       
         lon=a1->lon
         lat=a1->lat
     tos_ave1@units=" "
         tos_ave1@long_name="  "
         tos_ave2@units=" "
         tos_ave2@long_name="  "
         res@mpMinLonF              = min(tos1&lon)
         res@mpMinLatF              = min(tos1&lat)
         res@mpMaxLatF              = max(tos1&lat)
     res@mpMaxLonF              = max(tos1&lon)
         res@cnLevelSelectionMode = "ExplicitLevels"
     res@cnLevels             = (/ -8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6 /)
         res@cnFillOn             =True
         res@cnLinesOn   = False
        res@cnInfoLabelOn       = False
         res@mpAreaMaskingOn = True
         res@mpLandFillColor        = "gray"        
         res@mpInlandWaterFillColor = "blue"
         
         res@tmYLLabelFontHeightF= 0.03             ;设置字体大小,设置一个y或x就可以把全部的字体重新进行设置
         res@tmXBLabelFontHeightF= 0.03
     res@tmBorderThicknessF  = 0.5  
         res@tmXBMajorThicknessF  = 1   ;Sets linewidth scale factor for bottom major tick marks.ֻ¸ıäÏÖ¿̶èß         res@tmYLMajorThicknessF  =1
         
         res@gsnMinorLatSpacing  =2
         res@gsnMinorLonSpacing  =2
         aa=strlen(FILES1(i))
     res@tiMainString = str_get_cols(FILES1(i),0,aa-5)
         plot1(i)= gsn_csm_contour_map_ce(wks,tos_ave2(:,:),res)
         
         res2@cnFillOn             =False
         res2@cnLinesOn   = True
         res2@cnLineLabelPlacementMode = "Computed"       ;控制等值线性质
         res2@cnInfoLabelOn       = False
         plot2(i)= gsn_csm_contour(wks,tos_ave1(:,:),res2)
         
         overlay( plot1(i), plot2(i))
         
         ;==============================================================================
        delete([/tos_ave1, tos_ave2/])          
        delete([/tos1,tos2/])   
            delete(lat)
            delete(lon)                                                
                delete(res@mpMinLonF)
            delete( res@mpMinLatF)      
            delete(res@mpMaxLatF )      
        delete( res@mpMaxLonF)
          ;print("==============")
  end do        ; END OF TIME LOOP
     res@cnFillDrawOrder  = "PreDraw"
         res@mpAreaMaskingOn = True
         res@mpLandFillColor        = "gray"        
         res@mpInlandWaterFillColor = "blue"
         
  resP                     = True                ; modify the panel plot
  resP@cnLineLabelPlacementMode = "Computed"
  resP@txString            = "100_year_sst_avg"
  resP@gsnPanelLabelBar    = True                ; add common colorbar
  resP@lbLabelFontHeightF  = 0.01            ; make labels smaller
  resP@vpHeightF =.04                         ;设置色标大小
  resP@gsnPanelXWhiteSpacePercent = .25        ; set a bit of extra white space between panels in the x and y directions
  resP@gsnPanelYWhiteSpacePercent = .25
  resP@pmLabelBarOrthogonalPosF = -0.008
  gsn_panel(wks,plot1,(/6,4/),resP)
end
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-2-26 10:31:29 | 显示全部楼层
脚本附上,有点长,ncl运行不报错,个人认为问题出在最后的部分

sst_100year_climatecontour_and_deviationshade.ncl

6.1 KB, 下载次数: 19, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao
发表于 2014-2-26 11:13:07 | 显示全部楼层

回帖奖励 +1 金钱

直接贴脚本
密码修改失败请联系微信:mofangbao
发表于 2014-2-26 11:18:22 | 显示全部楼层
本帖最后由 longlivehj 于 2014-2-26 12:26 编辑

大概看了一下。
第一张图貌似是单独画的(在do循环外),第79行gsn_csm_contour_map_ce的最后一个参数应该用res2,否则等值线会采用(/ -8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6 /),导致显示不全。其它有几张等值线的疏密有点不同,但仔细看是对的,估计和res2中没有设置cnLevels有关,你用ManualLevels或ExplicitLevels设置一下后再看看。
密码修改失败请联系微信:mofangbao
发表于 2014-2-26 12:24:17 | 显示全部楼层
我看了一下,是你res2没有设置范围,是默认的,所以就乱了     可以参考     res@cnLevels, 设置res2@cnLevels                          
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-2-26 20:47:37 | 显示全部楼层
freekiller 发表于 2014-2-26 12:24
我看了一下,是你res2没有设置范围,是默认的,所以就乱了     可以参考     res@cnLevels, 设置res2@cnLe ...

真的是这样,我疏忽了,太谢谢啦
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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