爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6968|回复: 6

[作图] ncl等值线图加点求助!

[复制链接]

新浪微博达人勋

发表于 2020-9-2 17:43:38 | 显示全部楼层 |阅读模式

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

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

x
  ;-----------------------------------------------------------------
;
;  DKRZ - NCL Example:  NCL_map_settings.ncl
;
;  30.10.14 kmf
;-----------------------------------------------------------------
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"

begin
  setvalues NhlGetWorkspaceObjectId()
  "wsMaximumSize": 600000000
  end setvalues
  f1 =  addfile("ETOPO2v2g_f4.nc", "r")
  var1  =  f1->z(:,:)
  lon = f1->x(:)
  lon@units = "degrees_east"
  lat = f1->y(:)
  lat@units = "degrees_north"
  var1!0 = "lat" ;第一维的名称
  var1&lat = lat ;第一维的值,直接从文件中的变量u中提取
  var1!1 = "lon" ;第二维的名称
  var1&lon = lon  ;第二维的值
  wks = gsn_open_wks("png","plot3")
  gsn_define_colormap(wks,"WhiteBlueGreenYellowRed");WhiteBlueGreenYellowRed

  res                       =  True
  res@gsnMaximize           =  True            ;-- maximize graphics output
  res@gsnLeftString=" "
  res@gsnRightString=" "
  res@tmXBMode     = "Explicit"
  res@gsnDraw        = False      ; Will draw after overlay
  res@gsnFrame       = False
  res@lbLabelStride         =  1               ;-- every other label
  res@lbBoxMinorExtentF     =  0.15   
  res@gsnAddCyclic=False         ;-- decrease the height of the labelbar
  res@pmLabelBarOrthogonalPosF = -0.07         ;-- move the labelbar upward
  res@gsnPolar="SH"
  res@cnFillOn              =  True            ;-- turn on contour fill
  res@cnLinesOn             =  False           ;-- turn off contour lines
  res@cnLineLabelsOn        =  False           ;-- turn off line labels
  res@cnLevelSelectionMode  = "ManualLevels"   ;-- set contour levels manually
  res@cnMinLevelValF        =  0      ;-- minimum contour level
  res@cnMaxLevelValF        =4500         ;-- maximum contour level
  res@cnLevelSpacingF       = 200              ;-- contour level spacing
  res@mpCenterLonF          = 0              ;-- center at lon=10
  res@mpMaxLatF          = -60   
  res@mpDataBaseVersion     = "RANGS"      ;-- map resolution "MediumRes"  
  ;res@mpGridAndLimbOn       =  True            ;-- plot grid lines
  res@mpGridLineColor       = "grey30"         ;-- set grid line color
  res@mpPerimOn             =  False           ;-- don't draw the box around the plot
  res@mpLandFillColor             = "transparent"
  res@mpOceanFillColor            = "white"
  res@mpFillDrawOrder             = "PostDraw"
  res@tiMainString          = " "   ;-- title string
  res@tiMainFontHeightF     =  0.02            ;-- title font size

plot = gsn_csm_contour_map_polar(wks, var1, res)

  res1                       =  True
  res1@gsnDraw        = False      ; Will draw after overlay
  res1@gsnFrame       = False
  res1@gsnPolar="SH"
  res1@mpMaxLatF          = -60   
  res1@mpDataBaseVersion     = "RANGS"     
  map = gsn_csm_map(wks,res1)
  lons = (/76.37/)
  lats=(/-69.37/)
;添加text和点
  mkres                       =  True
  mkres@gsMarkerColor = "Black"
  mkres@gsMarkerSizeF = 15.        ; Increase marker sizes.

  dum = gsn_add_polymarker(wks,map,lons,lats,mkres)
  txres               = True
  txres@txFontHeightF = 0.015
  txres@txJust        = "CenterLeft"
  
  text_id = gsn_add_text(wks,map,"Zhongshan",lons,lats,txres)
  overlay(plot,map)
  draw(plot)
  frame(wks)
全文代码如下,就是想在等值线图上添加一个站点和text,是不是不能overlay呀,一直报错fatal:NhlAddOverlay: plot class mapPlotClass cannot be overlay plot member,我改成不overlay也不行,那个地方出了问题呢,思考了一个下午!请大神告知!


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

新浪微博达人勋

发表于 2020-9-2 19:10:41 | 显示全部楼层
加站点及文本确实不需要overlay,map那部分可以在plot部分实现,把map的删了,需要的属性在plot里面加就行,然后把overlay(plot,map)也删了。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-9-2 19:58:32 | 显示全部楼层
大神,我本来是这样写的  plot = gsn_csm_contour_map_polar(wks, var1, res)
  lats  = (/-79.37/)
  lons  = (/76.37/)
  mkres                       =  True
  mkres@gsMarkerColor = "Blue"
  mkres@gsMarkerSizeF = 15.        ; Increase marker sizes.
  dum = gsn_add_polymarker(wks,plot,lons,lats,mkres)
  txres               = True
  txres@txFontHeightF = 0.02
  txres@txJust        = "CenterLeft"
  text_id = gsn_add_text(wks,plot,"Zhongshan",lons,lats,txres)
但是结果不显示点呀
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-9-2 20:28:48 | 显示全部楼层
AXD 发表于 2020-9-2 19:10
加站点及文本确实不需要overlay,map那部分可以在plot部分实现,把map的删了,需要的属性在plot里面加就行 ...

大神,我本来是这样写的  plot = gsn_csm_contour_map_polar(wks, var1, res)
  lats  = (/-79.37/)
  lons  = (/76.37/)
  mkres                       =  True
  mkres@gsMarkerColor = "Blue"
  mkres@gsMarkerSizeF = 15.        ; Increase marker sizes.
  dum = gsn_add_polymarker(wks,plot,lons,lats,mkres)
  txres               = True
  txres@txFontHeightF = 0.02
  txres@txJust        = "CenterLeft"
  text_id = gsn_add_text(wks,plot,"Zhongshan",lons,lats,txres)
但是结果不显示点呀
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-9-3 07:44:53 | 显示全部楼层
对方的凤飞飞 发表于 2020-9-2 20:28
大神,我本来是这样写的  plot = gsn_csm_contour_map_polar(wks, var1, res)
  lats  = (/-79.37/)
  l ...

我没你的数据,简单画了个没数据的,可以画,代码如下:
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"

begin

  wks  = gsn_open_wks("png","maponly")       ; send graphics to PNG file
  res                       =  True
  res@gsnDraw        = False      ; Will draw after overlay
  res@gsnFrame       = False
  res@gsnPolar="SH"

                               
登录/注册后可看大图

  plot = gsn_csm_map_polar(wks,res)        ; draw global map

  lons = (/76.37/)
  lats=(/-69.37/)
;添加text和点
  mkres                       =  True
  mkres@gsMarkerColor = "red"
  mkres@gsMarkerSizeF = 60.        ; Increase marker sizes.
  mkres@gsMarkerIndex = 1

  dum = gsn_add_polymarker(wks,plot,lons,lats,mkres)

  txres               = True
  txres@txFontHeightF = 0.015
  txres@txJust        = "CenterLeft"
  text_id = gsn_add_text(wks,plot,"Zhongshan",lons,lats,txres)

  draw(plot)
  frame(wks)

  end
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-9-3 11:41:14 | 显示全部楼层
AXD 发表于 2020-9-3 07:44
我没你的数据,简单画了个没数据的,可以画,代码如下:
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/g ...

你好,我也运行了你这个代码,但是我一旦用上高程数据就不行,能否告诉我你的邮箱,我发给你数据,其实数据是公开的高程数据,但是有点大,大几百兆吧.
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-9-3 11:57:55 | 显示全部楼层
AXD 发表于 2020-9-3 07:44
我没你的数据,简单画了个没数据的,可以画,代码如下:
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/g ...

谢谢搞定了.
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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