爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 10419|回复: 7

[作图] 填色图 马赛克图 值不相同

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

新浪微博达人勋

发表于 2019-8-27 09:07:08 | 显示全部楼层 |阅读模式

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

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

x
大家好,我用ncl画了一个马赛克图,如图一,值都是对的;
然后把  res@cnFillMode ="RasterFill" 注释掉,其他不变,出来的填色图图2与图1相差很多,值都不同,实在不知道问题在哪里,求助大家,谢谢。
脚本直接贴了画图部分,前面数据处理无误,算出来score(60,60),画score(60,60)的分布;

脚本如下:

图一 rasterfill

图一 rasterfill

图2

图2

;--------画肉质期X5 雨量分布----------;
    wks=gsn_open_wks("png", "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@cnFillMode            ="RasterFill"     图2 只注释掉了这一行

    res@cnLevelSelectionMode = "ExplicitLevels" ; set manual contour levels
    res@cnLevels             =  (/0.6,0.8,1.0/)              ; set min contour level
    res@cnFillColors         =  (/"orange","yellow","blue","green"/)              ; set max contour level
    res@lbOrientation        = "vertical"              

    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)

      lon_add=(/105.8167, 106.6334 ,106.6334, 105.8167, 105.8167/)
    lat_add=(/28.4667, 28.4667, 29.4667, 29.4667, 28.4667 /)
    ;add 区域
    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)

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

新浪微博达人勋

发表于 2019-8-27 11:10:34 | 显示全部楼层

回帖奖励 +2 金钱

你这原始数据是格点数据吧?配完经纬度后没有插值是吗?所以导致以栅格出图,它是每个格点上的真实值,如果去掉那句话,ncl会自动用周边格点数据插值,我认为是这样

不加res@cnFillMode ="RasterFill"

不加res@cnFillMode ="RasterFill"

加上res@cnFillMode ="RasterFill"

加上res@cnFillMode ="RasterFill"
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-8-27 11:19:27 | 显示全部楼层
本帖最后由 Gabriella 于 2019-8-27 11:22 编辑
千里草 发表于 2019-8-27 11:10
你这原始数据是格点数据吧?配完经纬度后没有插值是吗?所以导致以栅格出图,它是每个格点上的真实值,如果 ...

谢谢您 我刚试了一下改cnlevel
把原来的
res@cnLevelSelectionMode = "ExplicitLevels" ; set manual contour levels
res@cnLevels             =  (/0.6,0.8,1.0/)              ; set min contour level
res@cnFillColors         =  (/"orange","yellow","blue","green"/)              ; set max contour level
res@lbOrientation        = "vertical"
改成
colors=(/"orange","yellow","blue","green"/)
    res@cnFillPalette        = colors
    res@cnLevelSelectionMode ="ManualLevels"
     res@cnMinLevelValF  =0.6
     res@cnMaxLevelCount =1.0
     res@cnLevelSpacingF =0.2
    res@lbOrientation        = "vertical"  
是能出图的,但是labelbar的最大值不是1 是0.975 不知道怎么改; try.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-8-27 11:37:12 | 显示全部楼层
通过改原来的画图等值线设置属性    ; res@cnLevelSelectionMode = "ExplicitLevels" ; set manual contour levels    ; res@cnLevels             =  (/0.6,0.8,1.0/)              ; set min contour level
    ; res@cnFillColors         =  (/"orange","yellow","blue","green"/)              ; set max contour level
    ; res@lbOrientation        = "vertical"              
改为:
    colors=(/"orange","yellow","blue","green"/)
    res@cnFillPalette        = colors
    res@cnLevelSelectionMode ="ManualLevels"
     res@cnMinLevelValF  =0.6
     res@cnMaxLevelCount =1.0
     res@cnLevelSpacingF =0.2

     ;laberbar设置
    res@lbLabelsOn =True
    res@lbOrientation        = "vertical"              
    res@lbLabelStrings       = (/"0.6","0.8","1.0"/)

还有一个问题就是黄色绿色的边界总是有蓝色的描边,按理说不应该有,这又是为啥呢?
try.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-12-23 10:41:19 | 显示全部楼层

回帖奖励 +2 金钱

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

使用道具 举报

新浪微博达人勋

发表于 2021-9-9 11:08:10 | 显示全部楼层

回帖奖励 +2 金钱

会不会是填色的时候,插值间隔设置太大了呢?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-3-20 22:34:12 | 显示全部楼层

回帖奖励 +2 金钱

学习一下!学一下!!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-10-23 11:15:21 | 显示全部楼层

回帖奖励 +2 金钱

学习学习,谢谢分享
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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