爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5829|回复: 6

[作图] 如何利用循环批量生成Overlay图?

[复制链接]

新浪微博达人勋

发表于 2019-7-24 23:48:52 | 显示全部楼层 |阅读模式

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

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

x
因为绘图数量较多,因此采用一个循环批量出图。
在overlay位势高度场和温度场时,虽然利用循环进行overlay,且在"x11"模式下可以看到每次overlay的结果,但是生成png文件时仅有最后一张overlay显示出来,请问是什么原因,该如何修改?请大神指教!
代码如下:

begin
a = addfile("Basicmean_field.nc","r")
gh = a->PH
t = a->T

wks = gsn_open_wks("png","test_L41_")

=============位势高度场设置====================
res = True
res@cnFillOn = True
res@cnLinesOn = False
res@lbLabelBarOn = True
res@cnFillPalette         = "BlAqGrYeOrReVi200"

res@gsnLeftString = "Geopotential height & Potential temperature"
res@gsnRightString = ""
res@gsnMaximize = True
res@gsnDraw = False
res@gsnFrame = False

nplots = 2
level = 41
plots = new(nplots,graphic)

do i=0,nplots-1
  plots(i) = gsn_csm_contour(wks,gh(i,level,:,:),res)
end do

=========温度场设置==================
tres = True

tres@cnFillOn = False
tres@lbLabelBarOn = False
tres@cnLevelSpacingF = 4.
tres@cnLineLabelsOn = True
tres@cnLineThicknessF = 4.
tres@cnLineColors = "red"
tres@gsnLeftString = " "
tres@gsnRightString = " "
tres@cnMonoLineDashPattern = True
tres@cnLineDashPattern = 1
tres@gsnDraw = False

tplots = new(nplots,graphic)

do i=0,nplots-1
  tplots(i) = gsn_csm_contour(wks,t(i,level,:,:),tres)
end do

============循环overlay===================
do i=0,nplots-1
  overlay(plots(i),tplots(i))
end do

draw(plots)

frame(wks)

end



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

新浪微博达人勋

发表于 2019-7-25 10:50:39 | 显示全部楼层
FILES = systemfunc (" ls -1 " +"./.nc") ;目标文件夹下多个.nc资料
numFILES = dimsizes(FILES)
print("numFILES = " + numFILES)
print(FILES)

do it = 0,numFILES-1               ; TIME LOOP
    a = addfile(FILES(it),"r")
    gh = a->PH
    t = a->T
    wks = gsn_open_wks("png","test_L41_")

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

使用道具 举报

新浪微博达人勋

发表于 2019-7-25 10:53:03 | 显示全部楼层
或者你把wks = gsn_open_wks("png","test_L41_")放到overlay循环里面去
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-26 16:20:38 | 显示全部楼层
小其其格 发表于 2019-7-25 10:50
FILES = systemfunc (" ls -1 " +"./.nc") ;目标文件夹下多个.nc资料
numFILES = dimsizes(FILES)
print( ...

这个结果显示fatal:file (a) isn't defined
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-26 16:22:41 | 显示全部楼层
小其其格 发表于 2019-7-25 10:53
或者你把wks = gsn_open_wks("png","test_L41_")放到overlay循环里面去

这个放到循环后显示wks变量为定义,不知道是哪一点出问题了,还望大神进一步解答,谢谢!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-7-26 17:01:22 | 显示全部楼层
河南大学环规院 发表于 2019-7-26 16:20
这个结果显示fatal:file (a) isn't defined

你把完整代码发出来
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-7-28 20:30:58 | 显示全部楼层
小其其格 发表于 2019-7-25 10:50
FILES = systemfunc (" ls -1 " +"./.nc") ;目标文件夹下多个.nc资料
numFILES = dimsizes(FILES)
print( ...

您好,我想问下批量出图怎么实现,我用您的代码尝试后发现后面的图会覆盖掉之前的图,问题和楼主的很相似,您知道怎么解决吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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