1

在此处输入图像描述

如何使 gsn_csm_contour_map 创建的绘图边缘平滑而不是使用那些蓝色方块?

我尝试了不同的填充模式,但都没有帮助。ncl中是否有活动轮廓功能?是否可以在空值和非空值之间创建轮廓?

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"

;======================================================================
; The main code
;======================================================================

begin
;---Read desired data
    sfile = addfile(f,"r")
    var = sfile->var1

;---For zooming in on map
    minlat =  foo
    maxlat =  bar
    minlon = foo1
    maxlon = bar1

;---Get dimentions
    dims = dimsizes(var)
    nlev = dims(0)
    time = var&time
    date_str_i = getDate(time)

;---Set some resources
    res                   = True

    res@cnFillOn          = True
    ;res@cnFillMode        = "RasterFill"
    ;res@cnRasterSmoothingOn =True
    res@cnLinesOn         = False
    res@cnLineLabelsOn    = True

    res@cnLevelSelectionMode = "ManualLevels"
    res@cnMinLevelValF       = -100
    res@cnMaxLevelValF       = 3000
    res@cnLevelSpacingF      = 200 ; 300 ; 50 ; 150

    res@mpMinLatF         = minlat 
    res@mpMaxLatF         = maxlat 
    res@mpMinLonF         = minlon 
    res@mpMaxLonF         = maxlon
    res@mpDataBaseVersion = "HighRes" 

    res@cnSmoothingOn     = True
    res@cnSmoothingDistanceF = 0.005
    res@cnSmoothingTensionF = 0.001
    res@mpCenterLonF      = (minlon+maxlon)*0.5
    res@mpCenterLatF      = (minlat+maxlat)*0.5

    res@pmTickMarkDisplayMode = "Always"

    res@lbLabelFontHeightF    = 0.01

    res@gsnAddCyclic      = False       ; this is regional data

;---Loop across each level and plot to a different PNG file every time
    do n=4,nlev-1
    wks_type = "png"
    wks_type@wkWidth = 2000
    wks_type@wkHeight = 2000
        wks = gsn_open_wks(wks_type,fname(0)+sprinti("%03i",n))    ;
        res@gsnRightString = "Time:" + date_str_i(n)
        res@gsnStringFontHeightF = 0.010
        plot = gsn_csm_contour_map_ce(wks,var(n,:,:),res)
        delete(wks)  

    end do
end

但我有点怀疑它与代码有关。

4

1 回答 1

1

你必须使用:

res@cnFillMode        = "AreaFill"
res@cnFillOn          = True
于 2017-03-22T08:47:12.137 回答