请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 68834|回复: 71

IDL/NCL/GRADS/MATLAB 绘图命令对应关系一览表

  [复制链接]

新浪微博达人勋

发表于 2012-12-1 11:06:03 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 游子 于 2012-12-21 11:07 编辑

经过绘图软件的学习,稍微将各个绘图软件的出图命令整理了一下,供大家交流、学习、使用。
下文以IDL的常用数据图形显示过程(pro)为主线,逐条写下去。每个绘图软件都有自身的优势和不足,在绘图时,大家可以根据自己的喜好和方便程度自行选择。由于NCL和grads的对应命令我在两篇帖子上已经详述了,就不在赘述了。先写一下IDL绘图通用参数(和Fortran语言类似,变量名关键字不区分大小写,字符串内部区分大小写)。position 定位图形位置大小,格式position=[x0,y0,x1,y1],(x0,y0)是左下角坐标,(x1,y1)是右上角坐标。0~1之间。
title        图名,格式title='Graphic name'(单引号和双引号通用,又和Fortran一样,ncl绝对不可以)
subtitle   副标题名,格式subtitle='Graphic name2'
charsize  字符大小(默认值1.0),格式charsize=2.0(放大了喔)
charthick 字符粗细或厚度,格式charthick=2.0(默认值1.0,此处加粗了喔)
font         字符的字体索引号(-1,0或者1)希腊字母可以通过latex语法输入,和matlab一样
color        颜色索引号
linestyle   线型
ticklen     刻度尺度(默认值0.02)
thick        线宽(默认值1.0)
psym       符号代码(见下文散点图介绍)
symsize   符号大小(默认值1.0)
/[xyz]log 坐标是否取对数,默认值是线型
/noeraze 与matlab的hold on有的一拼,和grads的clear作用相反
/nodata  不做图,数据从图中隐藏,只显示轴
/noclip    不裁剪
一般轴的性质设置
[xyz]range     轴范围(默认值:自动)
[xyz]title        标题字符(默认值:无)
[xyz]charsize  字符大小(默认值:1.0)
[xyz]style     轴类型(默认值:0;可取数值0~31)
                这个要细说一下1:由xrange和yrange指定范围
                                        2: 在轴范围的每一边留有空余
                                        4:不显示整个坐标轴
                                        8:只在左边或者下边显示坐标轴
                                      16:不将y轴的起始值强行规定为0
[xyz]margin      轴边缘空白,单位是字符间隔 (默认值:xmargin=[10,3],ymargin=[4,2])
[xyz]minor       最小刻度间的数目
[xyz]thicklen    刻度长度(默认值:0.02)
[xyz]gridstyle   标注方格的线型(0~5,0为默认值)
[xyz]tickformat 刻度格式
[xyz]ticks          主要刻度间的数目
[xyz]tickv          要标注的刻度数组
[xyz]tickname   刻度标注数组
/ynozero           y刻度不从0开始
1. 1-D 单线图
   1) IDL单线图:
     PLOT, [X,] Y [, /ISOTROPIC] [, MAX_VALUE=value] [, MIN_VALUE=value] [, NSUM=value] [, /POLAR] [, THICK=value] [, /XLOG] [, /YLOG] [, /YNOZERO]
[, BACKGROUND=color_index] [, CHARSIZE=value] [, CHARTHICK=integer] [, CLIP=[X0, Y0, X1, Y1]] [, COLOR=value] [, /DATA | , /DEVICE | , /NORMAL] [, FONT=integer] [, LINESTYLE={0 | 1 | 2 | 3 | 4 | 5}] [, /NOCLIP] [, /NODATA] [, /NOERASE] [, POSITION=[X0, Y0, X1, Y1]] [, PSYM=integer{0 to 10}] [, SUBTITLE=string] [, SYMSIZE=value] [, /T3D] [, THICK=value] [, TICKLEN=value] [, TITLE=string]
[, {X | Y | Z}CHARSIZE=value]
[, {X | Y | Z}GRIDSTYLE=integer{0 to 5}]
[, {X | Y | Z}MARGIN=[left, right]]
[, {X | Y | Z}MINOR=integer]
[, {X | Y | Z}RANGE=[min, max]]
[, {X | Y | Z}STYLE=value]
[, {X | Y | Z}THICK=value]
[, {X | Y | Z}TICK_GET=variable]
[, {X | Y | Z}TICKFORMAT=string]
[, {X | Y | Z}TICKINTERVAL= value]
[, {X | Y | Z}TICKLAYOUT=scalar]
[, {X | Y | Z}TICKLEN=value]
[, {X | Y | Z}TICKNAME=string_array]
[, {X | Y | Z}TICKS=integer]
[, {X | Y | Z}TICKUNITS=string]
[, {X | Y | Z}TICKV=array]
[, {X | Y | Z}TITLE=string]
[, ZVALUE=value{0 to 1}]
其中[]为可选项,称作关键字,这是IDL过程中的一个设置(IDL程序包括过程和函数,过程pro相当于FORTRAN的子程序,自定义函数就不必多说了吧。以上关键字都具有单词本身的实际意义。比如,选择了plot,x,y 横坐标自然由x数组决定,否则的话,横坐标从0开始,以size(y)-1结束。再比如,选择了/ISOTROPIC的话,x和y方向的比例就会一致,这在画绘制剖面图时是很危险的,因为垂直尺度一般比水平尺度小很多,所以此项要慎重选择。再例如,若希望y轴以log的数值标注,此时打开开关/ylog。还有就是IDL和matlab在绘制极坐标单线时很方便的,对于IDL而言,选择激活/POLAR,而matlab有单独的函数处理极坐标单线。plot的很多参数都是上面介绍的通用参数。
  2) NCL单线图
   gsn_xy
   gsn_y
  3) grads单线图
   set gxout line
  4) MATLAB单线图
   plot(Y)
   plot(X1,Y1,...,Xn,Yn)
   plot(X1,Y1,LineSpec,...,Xn,Yn,LineSpec)
   plot(...,'PropertyName',PropertyValue,...)
2. 重叠图
   1) IDL重叠图
    OPLOT, [X,] Y [, MAX_VALUE=value] [, MIN_VALUE=value] [, NSUM=value] [, /POLAR] [, THICK=value[, CLIP=[X0, Y0, X1, Y1]] [, COLOR=value] [, LINESTYLE={0 | 1 | 2 | 3 | 4 | 5}] [, /NOCLIP] [, PSYM=integer{0 to 10}] [, SYMSIZE=value] [, /T3D] [, ZVALUE=value{0 to 1}]
使用这个是前面已经使用plot,虽然叠加其他曲线,常用来绘制两组或多组时间序列,比较趋势走向、转折点、突变点等
    2) NCL重叠图
     先将多组时间序列写在一个二维数组中,直接绘制单线图,就会出多组曲线,还可以配置上相应的属性,这样以来各条曲线可以不同的颜色、线型、粗细显示,使得数据的可读性更强

     等值线矢量图上色图使用overlay叠加。
     还有提供特殊的叠加图
    gsn_csm_pres_hgt_vector
    gsn_csm_vector_scalar_map_ce

    gsn_csm_vector_scalar_map_polar
   3) grads单线图
     只要不清屏,单线会一直叠加下去。
    4) MATLAB单线重叠图
     plotyy(x1,y1,x2,y2)
    这个函数出图会有两个y轴,一个在左边,一个在右边。EXCEL也具有这个功能。重叠图还可以叠加画,键入hold on后,重复使用plot也可以达到目的。但是使用hold叠置的图形线型和颜色比较单调,而plotyy还是以不同颜色显示的,比较爽。
3. 散点图
   1) IDL散点图    plot,x,y,psym =1
  psym属于参数,注意和关键字的区别(关键字是开关,打开了就是True,否则就是False;而参数就不同了,可以设置很多数值)。psym参数可以取0——8九个数(0:无,1:+,2:-,3:*,4:.;5:<>(菱形);6:方块,7:叉号;8:自定义)
   2) NCL散点图
   gsn_xy加上相应的属性
   3) grads散点图
   set gxout line
   set ccolor 1   *(白色,看不到;或者0,黑色,在黑色背景下看不见,比较灵活喔)
   set cmark marker  *(marker 取值0——5)
   4) matlab散点图
   一言以蔽之,简单的一笔
   plot(x,y,'.')或者plot(x,y,'*')
   也可以和句柄一起使用,这只线型散点样式,举个例子吧:
   plot(x,y,'--rs','LineWidth',2,...
                'MarkerEdgeColor','k',...
                'MarkerFaceColor','g',...
                'MarkerSize',10)
4. 极线图
    1) IDL极线图
     plot,r,t,/polar
    2) MATLAB极线图
      polar(theta,rho)
5. 等值线图
   1) IDL等值线图
   CONTOUR, Z [, X, Y] [, C_ANNOTATION=vector_of_strings] [, C_CHARSIZE=value] [, C_CHARTHICK=integer] [, C_COLORS=vector] [, C_LABELS=vector{each element 0 or 1}] [, C_LINESTYLE=vector] [, C_ORIENTATION=degrees] [, C_SPACING=value] [, C_THICK=vector] [, /CELL_FILL | , /FILL] [, /CLOSED] [, /DOWNHILL] [, /FOLLOW] [, /IRREGULAR] [, /ISOTROPIC] [, LEVELS=vector] [, NLEVELS=integer{1 to 60}] [, MAX_VALUE=value] [, MIN_VALUE=value] [, /OVERPLOT] [{, /PATH_DATA_COORDS, PATH_FILENAME=string, PATH_INFO=variable, PATH_XY=variable} | , TRIANGULATION=variable] [, /PATH_DOUBLE] [, /XLOG] [, /YLOG] [, ZAXIS={0 | 1 | 2 | 3 | 4}]
在这个过程中参数和关键子是很多的,下面大致介绍一下一些主要参数的主要用法
levels      设置等值线级别
c_labels 与levels配合使用,决定是否标注等值线的数值
              例如c_labels=[1,0,1,0,....]这就是隔一条标注一个,1代表标注,0代表不标注
position,title,[xyz]title等通用参数
c_charsize 等值线标注大小
c_charthick 字符粗细或者厚度
c_annotation 字符串数组标注等值线,代替等值线数值
c_colors        颜色数组
c_linestyle     线型数组
min_value     相当于grads的set cmin min
max_value    相当于grads的set cmax max
下线面是常用的关键词选项
/overplot      如果前面已经有图,此处相当于ncl的overlay
                    相当于matlab的hold on, 相当与grads的什么也不做(未使用clear(c),连续使用dispay(d)
/irregular     不规则数据输入,适合用于台站资料处理
/fill               相当于ncl的cnFillOn = True,或者grads的set gxout shaded
/cell_fill         单元格填充,grads中也有此功能set gxout fgrid,与set fgvals Varn coln(多次设置)
   2) NCL等值线图
   gsn_csm_contour

   gsn_csm_lat_time
   gsn_csm_pre_hgt
   gsn_csm_map_ce
   gsn_csm_contour_map_ce
   gsn_csm_ contour_map_polar

   3) grads等值线图
    set gxout contour
   4)MATLAB等值线图
  contour(Z)
  contour(Z,n)
  contour(Z,v)
  contour(X,Y,Z)
  contour(X,Y,Z,n)
  contour(X,Y,Z,v)
  contour(...,LineSpec)
  contour(axes_handle,...)
  [C,h] = contour(...)
  和句柄联合使用效果更佳
6. 二维矢量图
   1) IDL 二维矢量图
    VELOVECT, U, V [, X, Y] [, COLOR=index] [, MISSING=value [, /DOTS]] [, LENGTH=value] [, /OVERPLOT] 所有plot的关键词都接受。
   2) NCL二维矢量图

   gsn_csm_vector
   gsn_csm_vector_map
   gsn_csm_vector_map_ce
   gsn_csm_vector_map_polar
   gsn_csm_sreamline_map_polar
   gsn_csm_vector_map_ce
   gsn_csm_vector_streamline_ce
   3)grads矢量图
   set gxout vector/stream/barb
   4)MATLAB矢量图

    quiver(x,y,u,v)
    quiver(u,v)
    quiver(...,scale)
    quiver(...,LineSpec)
    quiver(...,LineSpec,'filled')
    quiver(...,'PropertyName',PropertyValue,...)
    quiver(axes_handle,...)
  ----------------------------------------------------------------------------------------------------------
NCL和grads命令的对应关系,见前面两个帖子:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=10541

http://bbs.06climate.com/forum.php?mod=viewthread&tid=10578


有时间再写一下Fortran/C/NCL/IDL/MATLAB/GRADS读取nc数据的方法:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=11807(已出炉一部分)


评分

参与人数 4威望 +4 金钱 +58 贡献 +15 体力 +40 收起 理由
菜鸟的梦想 + 10 + 1
qxtlyf + 8 + 2
ztftom + 2 + 20 + 4 + 40 赞一个!
mofangbao + 2 + 20 + 8 期待后续

查看全部评分

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

新浪微博达人勋

发表于 2012-12-1 11:13:51 | 显示全部楼层
你都忙这些啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-12-1 11:20:52 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-12-1 12:58:36 | 显示全部楼层
游子 发表于 2012-12-1 11:20
这些是业余爱好

有业余的东西做是一件又辛苦又享受的事儿,加油~发上来后可以把前面上次发的东西链接一下~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-12-1 14:20:04 | 显示全部楼层
什么啊 也没有{:e311_b:}{:e311_b:}{:e311_b:}{:e311_b:}{:e311_b:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-12-3 09:25:12 | 显示全部楼层
mofangbao 发表于 2012-12-1 12:58
有业余的东西做是一件又辛苦又享受的事儿,加油~发上来后可以把前面上次发的东西链接一下~

求贡献分呢。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-12-3 19:07:14 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-12-3 21:42:26 | 显示全部楼层
非常好!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-12-3 21:42:29 | 显示全部楼层
非常好!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-12-5 09:41:14 | 显示全部楼层
楼主辛苦了!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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