爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 7044|回复: 2

NCL txt数据画多条不同标度的X轴曲线,共用一个Y轴(XY型)

[复制链接]

新浪微博达人勋

发表于 2014-4-23 16:50:29 | 显示全部楼层 |阅读模式
NCL
系统平台:
问题截图: -
问题概况: NCL txt数据画多条不同标度的X轴曲线(不同颜色的曲线对应不同标度的X轴),共用一个Y轴(XY型)
我看过提问的智慧: 看过
自己思考时长(天): 7

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

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

x
NCL txt数据画多条不同标度的X轴曲线(不同颜色的曲线对应不同标度的X轴),共用一个Y轴(XY型)


在longlivehj的帮助下,已经给出画图的总体轮廓。由于是初学,所以,有一些问题还没搞明白。
1.使用的是txt数据,不同变量的数据是按照列排列的。多X轴的情况下应该如何排列、读取?
2.目前能看到plot1 = gsn_csm_xy(wks, u1, u1&lat, res1)。应该是最基本的XY画图。后面的@基本能看明白代表的意义。但是不明白res2 3 4和plot2 3 4的思路。

getvalues plot2
        "trXMinF": xmin
        "trXMaxF": xmax
    end getvalues


    x = new(2, "float")
    y = new(2, "float")
    x(:) = 0.
    y(:) = 0.
这两部分也不太明白。getvalues和第二部分在ncl里面起的作用没有思路。
看资料上写的@是设定画图的要求。但对于为什么加res和plot等没有头绪。所以想知道画这个图像时的画图思路以及是如何实现的。

望高手解疑答惑。








load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"

begin

    f = addfile ("$NCARG_ROOT/lib/ncarg/data/cdf/uv300.nc","r")
    u = f->U

    u1 = u(0, :, {0})
    u2 = u(0, :, {80}) + 50.
    u3 = u(0, :, {160}) + 100.

    wks = gsn_open_wks ("x11","3x")

    res1 = True
    res1@gsnFrame = False
    res1@vpHeightF = .3
    res1@xyLineColor = "red"
    res1@tiXAxisString = "x1"

    plot1 = gsn_csm_xy(wks, u1, u1&lat, res1)

    res2 = res1
    res2@xyLineColor = "green"
    res2@tiXAxisString = ""

    res2@tmXBOn = False
    res2@tmXBBorderOn = False
    res2@tmXTOn = False
    res2@tmXTBorderOn = False
    res2@tmYLOn = False
    res2@tmYLBorderOn = False
    res2@tmYROn = False
    res2@tmYRBorderOn = False

    plot2 = gsn_csm_xy(wks, u2, u1&lat, res2)

    getvalues plot2
        "trXMinF": xmin
        "trXMaxF": xmax
    end getvalues

    res3 = res2
    res3@vpYF = .7
    res3@trXMinF = xmin
    res3@trXMaxF = xmax
    res3@tmXBOn = True
    res3@tmXBBorderOn = True
    res3@tiXAxisString = "x2"

    x = new(2, "float")
    y = new(2, "float")
    x(:) = 0.
    y(:) = 0.

    plot3 = gsn_csm_xy(wks, x, y, res3)

    res2@xyLineColor = "blue"

    plot4 = gsn_csm_xy(wks, u3, u1&lat, res2)

    getvalues plot4
        "trXMinF": xmin
        "trXMaxF": xmax
    end getvalues

    res3@vpYF = .6
    res3@tiXAxisString = "x3"
    res3@trXMinF = xmin
    res3@trXMaxF = xmax

    plot5 = gsn_csm_xy(wks, x, y, res3)

    frame(wks)
end

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

新浪微博达人勋

发表于 2014-4-24 12:23:14 | 显示全部楼层
本帖最后由 longlivehj 于 2014-4-24 12:26 编辑

基本思路:
1. 作第一条曲线;
2. 作第二条曲线,保证viewport和第一条曲线完全一致,并隐藏所有坐标轴;
3. 作一条“不可见”的曲线,保证x轴范围与第二条曲线完全一致,viewport与前两幅相同;
4. 调整“不可见”曲线viewport在y方向上的位置,与第一条曲线x轴错开,并关闭除下方x轴外所有的坐标轴;
按照步骤2-4,反复添加曲线和专属x轴。

getvalues plot2
    "trXMinF": xmin
    "trXMaxF": xmax
end getvalues
获取plot2的x轴范围,然后用于设置下一条“不可见”曲线的x轴,这样就可以将“不可见”曲线的x轴作为plot2的x轴了。

x = new(2, "float")
y = new(2, "float")
x(:) = 0.
y(:) = 0.
“不可见”曲线的x、y坐标,可以设置成其它,只要能让曲线不可见就行。

可能描述的不大清楚,见谅!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-24 16:39:27 | 显示全部楼层
在高手的指点下现已豁然开朗
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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