爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13120|回复: 6

[作图] [分享和备忘] NCL画组图时在固定位置添加文字

[复制链接]
发表于 2019-8-13 19:14:54 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 里斯斯里 于 2019-8-13 19:18 编辑

NCL在添加文本到图形上有两个函数:gsn_add_text和gan_text_ndc,两个函数在但单独用到一张图片的时候都挺好使的,
但想在组图固定位置(NCL的NDC坐标)上添加文本的时候,gsn_text_ndc(wks, text, x, y, res)无法指定某张图片进行添加且在组图中的位置难以确定!

自己写的一个函数来对组图中的单独一张图片固定位置添加文本:
  1. undef("Overlay_Coefficient")
  2. procedure Overlay_Coefficient( wks, BasePlot:graphic, Var_X[*]:numeric, Var_Y[*]:numeric )
  3. local txres, R, str, vpx, vpy, vpw, vph, pos
  4. begin
  5. ;--- Add the regression coeffecient
  6. txres = True
  7. txres@txFontColor = "red"
  8. txres@txFontHeightF = 0.01

  9. R = escorc(Var_X, Var_Y)
  10. str = unique_string("text")

  11. getvalues BasePlot
  12. "vpXF" : vpx
  13. "vpYF" : vpy
  14. "vpWidthF" : vpw
  15. "vpHeightF" : vph
  16. end getvalues
  17. pos = (/vpx+0.3*vpw, vpy-0.15*vph/)
  18. ; print(pos)

  19. ; BasePlot@$str$ = gsn_add_text(wks, BasePlot, "R="+sprintf("%4.2f", R), min(Var_X)*0.7, max(Var_Y)*0.85, txres)
  20. gsn_text_ndc(wks, "R="+sprintf("%4.2f", R), pos(0), pos(1), txres)
  21. end
复制代码

其中需要注意的是,在这一步之前已经执行过gsn_panel程序

代码如下:

  1. pres = True
  2. pres@gsnFrame = False
  3. pres@gsnMaximize = True
  4. pres@gsnPanelFigureStrings = (/"(a)","(b)","(c)","(d)","(e)","(f)","(g)","(h)","(i)","(j)","(k)","(l)"/)
  5. pres@gsnPanelFigureStringsJust = "TopLeft"
  6. pres@gsnPanelFigureStringsFontHeightF = 0.008
  7. pres@gsnPanelBottom = 0.04 ;--- move panel top to give space for bottom strings.
  8. pres@gsnPanelXWhiteSpacePercent = 15 ;--- the distance between plots elembers(X)
  9. pres@gsnPanelYWhiteSpacePercent = 3 ;--- the distance between plots elembers(Y)
  10. pres@gsnPanelSave = True
  11. ; gsn_panel(wks, ndtooned((/plots_diff_Avg, plots_pct_Avg/)), (/2,3/), pres)
  12. gsn_panel(wks, Plots, (/3,2/), pres)
复制代码
重要的是最后一个属性pres@gsnPanelSave = True,必须打开才有用。

最终图片效果如下(原谅我粗犷的审美):
Down_Sur_windspeed.png


另外画图中碰到过几个问题总结一下:
Q1:画组图时由于多张图片都在一页上,会出现部分图片超出去看不见了
解决方法:调整gsn_panel的这个属性试试 gsnPanelBottomgsnPanelTopgsnPanelLeftgsnPanelRight,这四个属性分别是给图片上留空白空间用的(上下左右)。我的情况就是最下面的一行图片坐标不见了,设置gsnPanelBottom = 0.04就好了。
Q2:调整组图各张图片之间的间距?
解决方法:使用gsnPanelXWhiteSpacePercentgsnPanelYWhiteSpacePercent这个两个属性

这些事画图时候自己的一些想法,欢迎多多给点意见。

参考帖子:
http://www.ncl.ucar.edu/Applications/Scripts/panel_GWLs_Rain.ncl

correlation.ncl

21.71 KB, 下载次数: 49, 下载积分: 金钱 -5

ncl脚本

评分

参与人数 1金钱 +10 贡献 +2 收起 理由
mofangbao + 10 + 2

查看全部评分

密码修改失败请联系微信:mofangbao
发表于 2019-8-14 09:53:35 | 显示全部楼层
感谢分享!!!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

发表于 2019-11-11 13:57:20 | 显示全部楼层
感谢分享十分有用
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2020-9-7 09:25:35 | 显示全部楼层
学到了!感谢分享!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2020-9-22 14:38:07 | 显示全部楼层
感谢分享,十分有用
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2020-10-14 22:18:01 | 显示全部楼层
3q3q3q3q3q
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2020-11-22 11:18:53 | 显示全部楼层
{:eb502:}{:eb502:}
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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