爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3187|回复: 1

[作图] 关于画散度场出现的问题

[复制链接]
发表于 2023-5-7 03:48:21 | 显示全部楼层 |阅读模式
50金钱
本帖最后由 清凉月 于 2023-5-7 03:54 编辑

想画个散度的填色图,ncl一直不报错不出图,删减版程序如下:
(程序里涉及的文件都在附件里)

  1. load "$NCARG_ROOT/lib/ncarg/nclscripts/contrib/calendar_decode2.ncl"
  2. load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
  3. load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
  4. load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"

  5. begin


  6. ;-------------计算300hPa位势高度的气候态和距平--------------------------------------------------

  7. f_data1       = addfile("500hPa_Global_1980_2021_monthly.nc","r")
  8. lat           = f_data1->latitude
  9. lon           = f_data1->longitude

  10. f_data2       = addfile("div.nc","r")     ;改类型
  11. div         = f_data2->div
  12. div!0   = "lat"
  13. div&lat = lat
  14. div!1   = "lon"
  15. div&lon = lon
  16. div@units = "m/s^2"
  17. div@units = "m/s^2"

  18. data      = div(:,:)

  19. wks = gsn_open_wks("png","xxx")

  20. ;-------------散度--------------------------------------------------
  21. gsn_define_colormap( wks ,"GreenMagenta16")
  22. res2              = True
  23. res2@gsnMaximize  = True
  24. res2@gsnAddCyclic = False   ;有循环点(全球数据)
  25. res2@cnLinesOn    = False
  26. res2@cnFillOn     = True
  27. ; ;设置地图
  28. res2@mpFillOn     = False
  29. res2@mpMinLonF    = -60
  30. res2@mpMaxLonF    = 180
  31. res2@mpMinLatF    = 15
  32. res2@mpMaxLatF    = 90
  33. res2@pmTickMarkDisplayMode = "Always"
  34. ;地图数据
  35. res2@mpDataSetName         = "./database/Earth..4"
  36. res2@mpDataBaseVersion     = "MediumRes" ; or "Ncarg4_1"
  37. res2@mpGeophysicalLineColor= "black"
  38. ;设置地图经纬线
  39. res2@mpGridAndLimbOn       = True
  40. res2@mpGridLineThicknessF  = 0.5
  41. res2@mpGridLineDashPattern = 2
  42. res2@mpGridSpacingF        = 15
  43. ;色标垂直放
  44. res2@lbOrientation         = "Vertical"  

  45. res2@cnLevelSelectionMode = "ExplicitLevels"
  46. res2@cnLevels     = (/-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7/)
  47. res2@cnFillColors = (/2,3,4,5,6,7,8,0,0,11,12,13,14,15,16/)

  48. data@_FillValue = 32766
  49. data@missing_value = 32766

  50. ; printVarSummary(data)
  51. plot_2 = gsn_csm_contour_map(wks,data,res2)

  52. end
复制代码

奇怪的是,当把关于mp的设置都删了,把这句话改成这样:plot_2 = gsn_csm_contour(wks,data,res2)之后,出来这么一张图【图片1】
但是用Panoply看了下散度算的也没有问题,别人拿python画了图也没有问题,如【图2】。

所以想问一下这个程序问题出在哪里,感谢~

下载附件居然要扣钱,放网盘了
链接:https://pan.baidu.com/s/1JOfNHKxGSHD9V88P8IT_Wg?pwd=u658
提取码:u658
--来自百度网盘超级会员V6的分享



图片2

图片2

图片1

图片1

2.ncl

1.9 KB, 下载次数: 1, 下载积分: 金钱 -5

500hPa_Global_1980_2021_monthly.nc

27.93 MB, 下载次数: 0, 下载积分: 金钱 -5

div.nc

115.25 KB, 下载次数: 0, 下载积分: 金钱 -5

最佳答案

查看完整内容

问题可能出在,你的div数据里面包含了nan缺测值,你在读入div后,加一行,replace_ieeenan(div,32767.0,0)试试。另外,div本身有经纬度坐标,后面再给div坐标重新定义无必要。
密码修改失败请联系微信:mofangbao
发表于 2023-5-7 03:48:22 | 显示全部楼层
问题可能出在,你的div数据里面包含了nan缺测值,你在读入div后,加一行,replace_ieeenan(div,32767.0,0)试试。另外,div本身有经纬度坐标,后面再给div坐标重新定义无必要。
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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