爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4994|回复: 3

[作图] ncl画MJO相图

[复制链接]

新浪微博达人勋

发表于 2022-12-13 15:04:30 | 显示全部楼层 |阅读模式

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

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

x
参照官网例子mjoclivar_15.ncl画MJO相图,但是画图时出现sh: convert: command not found。并且得到的图明显是错的。各位大神能不能帮忙看看问题出在哪?用到convert是在最后部分:
       if (pltType.eq."png") then
           if (isatt(opt,"pltConvert")) then
               pltConvert = opt@pltConvert    ; convert options
           else
               pltConvert = "-trim +repage -border 8 -bordercolor white"
           end if
           system("convert "+pltConvert+" "+pltPath+".png "+pltPath+".png")
       end if

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

新浪微博达人勋

发表于 2022-12-14 09:55:50 | 显示全部楼层
单独看这一部分好像没有错,我也是这样写的。
  opt                       = True           ; Background options
  ;opt@gsnMaximize           = True           ; make large
   opt@tiMainString          = pltTitle

   plMark                    = True           ; poly marker
   plMark@gsMarkerIndex      = 16             ; solid circle  
   plMark@gsMarkerSizeF      = 0.005
   plMark@gsMarkerThicknessF =  1
   
   plLine                    = True           ; line segments
   plLine@gsLineThicknessF   = 1.0            ; 1.0 is default

   txres                     = True
   txres@txFontHeightF       = 0.010          ; size of font for printed day

   namMonth = (/ "Jan","Feb","Mar","Apr","May","June" \
               ,"July","Aug","Sep","Oct","Nov","Dec" /)
   colMonth = (/12,20,5,6,7,8,10,11,12,13,18,20/)   ; indices into color table

   imon = floattoint( ymdmon )   ; convenience
   iday = floattoint( ymdday )   ; sunscripts must be integer

   pltPath = pltDir+pltName
   if (.not.pltMovie) then
       wks  = gsn_open_wks(pltType, pltPath)  ; open workstation
                         gsn_define_colormap(wks,"radar_1")
   end if

   plot = mjo_phase_background(wks, opt)      ; generic phase space background
   xBegin= pc1(0)                             ; need for start of the line
   yBegin= pc2(0)
      
   plMark@gsMarkerColor = "black"             ; indicate initial point
   plMark@gsMarkerSizeF = 2.5*plMark@gsMarkerSizeF  ; make larger
   plot@$unique_string("dum")$ = gsn_add_polymarker(wks, plot, xBegin, yBegin, plMark)
   plMark@gsMarkerSizeF = plMark@gsMarkerSizeF/2.5  ; reset

   nMon            = 0
   monInfo         = new ((/12,2/),"string")
   monInfo(nMon,0) = namMonth(imon(0)-1)
   monInfo(nMon,1) = colMonth(imon(0)-1)
   
   label_opt       = 5                ; label every # day   0 = don't label days
   label_color     = True             ; draw month label with its proper color
         
   do nt=1,ntim-2
          
      if (pltMovie) then
          ext = "_"+sprinti("%4.0i", nt )
          wks = gsn_open_wks(pltType,pltName+ext)  
                                        gsn_define_colormap(wks,"radar_1")
      end if
                                                    ; color changes w month
      plLine@gsLineColor = colMonth(imon(nt)-1)     ; -1 is cuz NCL is 0-based
      plot@$unique_string("dum")$ = gsn_add_polyline(wks, plot, (/xBegin,pc1(nt)/), (/yBegin,pc2(nt)/), plLine)
          
      xBegin= pc1(nt)                           
      yBegin= pc2(nt)
          
      if (label_opt.eq.0) then
          plMark@gsMarkerColor = plLine@gsLineColor ; same as line color
          plot@$unique_string("dum")$ = gsn_add_polymarker(wks, plot, xBegin, yBegin, plMark)
      else
         if (mod(iday(nt),label_opt).eq.0) then                  
            txres@txFontColor           = "black"     
            plot@$unique_string("dum")$ = gsn_add_text(wks, plot, iday(nt)+"", xBegin, yBegin, txres)
                         print(iday(nt)+" "+xBegin+" "+yBegin)
         else                                          ; marker only
            plMark@gsMarkerColor = plLine@gsLineColor  ; same as line color
            plot@$unique_string("dum")$ = gsn_add_polymarker(wks, plot, xBegin, yBegin, plMark)
                        print(iday(nt)+" "+xBegin+" "+yBegin)
         end if
      end if

      if (iday(nt).eq.1) then
          nMon = nMon+1
          monInfo(nMon,0) = namMonth(imon(nt)-1)
          monInfo(nMon,1) = colMonth(imon(nt)-1)
      end if

      if (pltMovie) then
          draw(plot)                                          
          frame(wks)                                         
      end if
      
   end do
       
   xBegin= pc1(nt)                           
   yBegin= pc2(nt)
   
   plMark@gsMarkerColor = "black"             ; indicate last point
   plMark@gsMarkerSizeF = 2.5*plMark@gsMarkerSizeF  ; make larger
   plot@$unique_string("dum")$ = gsn_add_polymarker(wks, plot, xBegin, yBegin, plMark)
       
   if (.not.pltMovie) then
       if (label_color) then                ; fancy coloring of months
           getvalues plot
               "trXMinF" : xmin
           end getvalues
           xinc = (xmin*-2) / (nMon+1+2.)   ; total number months = nMon+1. +2
                                            ; for spacing on ends
           txres@txJust        = "CenterLeft"
           txres@txFontHeightF = 0.013      ; size of font for printed month
           xstart = xmin+(1.25*xinc)   
           if (nMon.gt.0) then
               do n=0, nMon
                  txres@txFontColor = monInfo(n,1)
                  plot@$unique_string("dum")$ =  gsn_add_text(wks, plot, monInfo(n,0) ,xstart , -3.75, txres)
                  xstart = xstart+xinc
               end do
           end if
       end if
       draw(plot)                                          
       frame(wks)                                         

       if (pltType.eq."png") then
           if (isatt(opt,"pltConvert")) then
               pltConvert = opt@pltConvert    ; convert options
           else
               pltConvert = "-trim +repage -border 8 -bordercolor white"
           end if
           system("convert "+pltConvert+" "+pltPath+".png "+pltPath+".png")
       end if

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

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-12-15 10:40:24 | 显示全部楼层
hmm 发表于 2022-12-14 09:55
单独看这一部分好像没有错,我也是这样写的。
  opt                       = True           ; Backgroun ...

你画出来的和官网一样吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-12-16 17:00:30 | 显示全部楼层
出图看好像没有什么大问题
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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