爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4991|回复: 1

[作图] 想画垂直剖面随时间的变化图,求助!!

[复制链接]

新浪微博达人勋

发表于 2017-8-8 09:35:51 | 显示全部楼层 |阅读模式

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

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

x
各位前辈,我想画一张垂直剖面随时间变化的图,大概是这样的效果
无标题.png
我画填色图用的命令是gsn_csm_contour,作图数据是二维数组,坐标是深度(行)和时间(列)。深度是不均匀的,比如第一行是0.4米,第二行是1米,第三行是10米。但是画出来发现它不识别我的垂直坐标,只是按行均匀的画图。
我在官网找了好久,只在  Data with 2D vertical coordinates  这里找到了一个类似的,照着改也能用。但对里面的

create
end create
以及gsnp_point_tickmarks_outward这个函数


不是很明白,然后也找不到相关的用法说明,希望有高手能指点一下

官网脚本如下
;**************************************************; 2dvertcoords.ncl;**************************************************; Concepts illustrated:;   - Reading a C format data file;   - Reordering variable dimensions;   - Using the new color model;   - Using NCL OOP statements;;**************************************************;; These files are loaded by default in NCL V6.2.0 and newer; load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" ; load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"                      ;**************************************************begin                                                                        ;**************************************************; read in binary data;**************************************************; This setfileoption call assures the file is read; as a big endian file. This will happen by default; on a big endian machine.;**************************************************  setfileoption("bin","ReadByteOrder","BigEndian")  dims  = (/3,4000,62/)  data_array   = cbinread("bin_output15_bigEndian",dims,"float") ;**************************************************; name variable dimensions, so we can reorder variable; and subscript.;**************************************************   data_array!0 = "vars"  ; variables (x-coord,z-coord,values)  data_array!1 = "range" ; range off the shelf  data_array!2 = "depth" ; depth  d            = data_array(vars|2,depth|:,range|:);  d!0          = "depth";  d!1          = "cross_shelf";**************************************************; read in coordinates;**************************************************   dims      = (/2,4000,62/)              coords    = cbinread("bin_vgrid_bigEndian",dims,"float")  coords!0  = "vcoords"   ; name dimensions so we can reorder  coords!1  = "range"                                                          coords!2  = "depth"                                                                                                       range            = coords(vcoords|0,depth|:,range|:); the challenge with this type of data is a two-dimensional vertical; coordinate. The gsn_csm high-level graphical interfaces can handle 2D ; lat/lon coordinates but are not currently adpated for 2D vertical coords.     depth            = coords(vcoords|1,depth|:,range|:);**************************************************; assign variable metadata;**************************************************   wks   = gsn_open_wks("png","2dvertcoords"); send graphics to PNG file  res                 = True                ; plot mods desired  res@gsnMaximize     = True  res@sfXArray        = range               ; could be reduced to 1D  res@sfYArray        = depth               ; 2D                    res@cnInfoLabelOn   = False               ; turn off contour info label  res@cnFillOn        = True                ; turn on color  res@cnFillPalette   = "gui_default"       ; set color map  res@cnLineLabelsOn  = False               ; turn off line labels  res@cnLinesOn       = False               ; turn off contour lines  res@tiMainString    = "original data (no tickmarks present)"     ; add title  res@lbOrientation   = "vertical";; This first plot will produce a warning, which you can ignore.; The next plot will fix the problem.;  plot  = gsn_csm_contour(wks,d,res)         ; contour the variable                 ;                                                   ; Linearize the plot by overlaying on a "logLinPlot" object. It's ; important to use the "curvilinear" grid type instead of the default ; 2D "spherical" grid type because the spherical grid type assumes ; that the X coordinates are modular and that the Y coordinates only ; range from -90 to 90.  ;                                                     setvalues plot                                                                 "trGridType"    : "curvilinear"     "tiMainString"  : "linearized data"    "tiXAxisString" : "Range across shelf (m)"   ; x-axis title    "tiYAxisString" : "Depth up from bottom (m)" ; y-axis title  end setvalues                                                                                                                   ll = create "ll" logLinPlotClass wks                                           "trXMinF"      : min(range)    "trXMaxF"      : max(range)    "trYMinF"      : min(depth)     "trYMaxF"      : max(depth)    "pmTickMarkDisplayMode" : "always" ; necessary in order to turn on tickmarks  end create     gsnp_point_tickmarks_outward(ll,False,-1.,-1.,-1.,-1.,-1.,-1.,True);; Overlaying the original plot on a "loglin" object will; linearize the axes.;  overlay(ll, plot)                                                                                                               draw(ll)                                                                     frame(wks)                                                                                                                    end
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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