爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6854|回复: 5

[作图] 填色图不同填色区域边缘问题

[复制链接]
回帖奖励 14 金钱 回复本帖可获得 2 金钱奖励! 每人限 1 次

新浪微博达人勋

发表于 2019-8-27 14:33:05 | 显示全部楼层 |阅读模式

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

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

x
大家好,我想画一张评估指数(只有三个值 0.6 0.8 1.0)的填色分布图,做出的图发现总是把色标的最大值1变为0.975,把0.6和1填色区域之间填成蓝色边界,脚本如下(score是要画的变量,脚本只放了画图部分):之前同样数据脚本增加res@cnFillMode            ="RasterFill",图如图2所示,现在之间画contour是不是因为涉及插值问题出现了这样的结果,求教如何解决,谢谢。
  ;--------画肉质期X5 雨量分布----------;
    wks=gsn_open_wks("eps", "F:/data/product_CQ/HUAJIAO_2019/caishou/X6_prep_2019_larger")
     ;gsn_define_colormap(wks, "grads_rainbow")
    res                         = True
    res@gsnMaximize             =True              
    res@gsnDraw                 =False               
    res@gsnFrame                =False
    res@gsnAddCyclic            =False   ; regional data, don't add pt

    res@cnFillOn              = True
    res@cnLinesOn             = True
    res@cnLineLabelsOn        = True
    res@cnSmoothingOn         = True


    colors=(/"orange","yellow","blue","green"/)
    res@cnFillPalette        = colors
    res@cnLevelSelectionMode ="ManualLevels"
     res@cnMinLevelValF  =0.6
     res@cnMaxLevelCount =1.0
     res@cnLevelSpacingF =0.2

    res@mpMaxLatF  =30
    res@mpMinLatF  =28.0333
    res@mpMaxLonF  =106.9667
    res@mpMinLonF  =105
    res@tmXBMode             ="Explicit"
    res@tmXBValues           =(/105,105.5,106.0,106.5,106.9/)
    res@tmXBLabels           =(/"105","105.5","106.0","106.5","106.9~S~o~N~E"/)
    res@tmYLMode             ="Explicit"
    res@tmYLValues           =(/28.1,28.5,29,29.5,30/)
    res@tmYLLabels           =(/"28.1","28.5","29","29.5","30~S~o~N~N"/)

    res@mpDataBaseVersion           = "MediumRes"      ; use finer database

     ;---------setting---------------;
    res@tmXBLabelDeltaF = -0.5                       ;使其更靠近X轴
    res@tmYLLabelDeltaF = -0.5
    res@tmXBMajorLengthF = 0.01                      ;刻度线长短
    res@tmYLMajorLengthF = 0.01            
    res@tmXBMajorThicknessF = 5.0             ;刻度线粗细
    res@tmYLMajorThicknessF = 5.0
    res@tmXBMinorOn =False
    res@tmYLMinorOn =False
    res@tmXBLabelFontHeightF = 0.02                 ;字体大小
    res@tmYLLabelFontHeightF = 0.02
    res@tmXBLabelFontThicknessF = 3
    res@tmYLLabelFontThicknessF = 3
    res@tmBorderThicknessF     = 5.0   
    plot=gsn_csm_contour_map(wks, score, res)

    ;add 区域
    lon_add=(/105.8167, 106.6334 ,106.6334, 105.8167, 105.8167/)
    lat_add=(/28.4667, 28.4667, 29.4667, 29.4667, 28.4667 /)
    lnres  =True
    lnres@gsLineColor ="red"
    lnres@gsLineThicknessF=10.0
    lnres@gsLineDashPattern =1
    Polygon=gsn_add_polyline(wks,plot,lon_add,lat_add,lnres)


    draw(plot)
    frame(wks)

图1

图1

图2

图2

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-8-27 17:23:05 | 显示全部楼层

回帖奖励 +2 金钱

以前我用grads时出现过类似问题,原因是画填色图时,系统会自动把数据补充成连续的(插值?),比如本来只有0和1,但它画的时候会默认0和1之间有0.5,就会出现区块之间有一条线,后来改变出图类型,变成画马赛克图,对指定格点填色,就好了。不知我说明白没有?猜测ncl里是不是也有这种情况,可能需要换个出图的类型。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-8-27 17:35:12 | 显示全部楼层

回帖奖励 +2 金钱

本帖最后由 灭火器 于 2019-8-27 17:38 编辑

把色标设置为
res@cnLevels = (/0.7, 0.9/)
把色标的刻度文字设置为
res@lbLabelStrings = (/"0.6", "0.8", "1.0"/)
最后让文字居中
res@lbLabelAlignment = "BoxCenters"
另外需要用raster fill
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-8-28 10:41:38 | 显示全部楼层
苏拉苏拉 发表于 2019-8-27 17:23
以前我用grads时出现过类似问题,原因是画填色图时,系统会自动把数据补充成连续的(插值?),比如本来只 ...

嗯嗯 说明白了~ 谢谢~
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-8-28 11:18:07 | 显示全部楼层
灭火器 发表于 2019-8-27 17:35
把色标设置为
res@cnLevels = (/0.7, 0.9/)
把色标的刻度文字设置为

好的 我试试~谢谢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-3-29 19:24:35 | 显示全部楼层

回帖奖励 +2 金钱

{:5_275:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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