爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11539|回复: 6

[作图] 画3个Y轴折线图做标记的问题(已解决)

[复制链接]
发表于 2015-12-30 16:12:28 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 悠然一梦123 于 2016-5-19 08:50 编辑

3个Y轴,左侧3个变量,右侧3个变量,最右侧一个变量,想在7条折线上均做标记,可出来的图只有三条线有标记,有标记的均是各个Y轴上的第一个变量,请问,该怎么办,下面是我的脚本。已解决!
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
begin
data=asciiread("lan 3.csv",(/72,8/),"float")
x=data(:,0)
y1=data(:,1)
y2=data(:,2)
y3=data(:,3)
y4=data(:,4)
y5=data(:,5)
y6=data(:,6)
y7=data(:,7)
data_all1=new((/3,72/),float)
data_all2=new((/3,72/),float)
data_all3=new((/1,72/),float)
data_all1(0,:)=y1
data_all1(1,:)=y3
data_all1(2,:)=y4
data_all2(0,:)=y2
data_all2(1,:)=y5
data_all2(2,:)=y6
data_all3(0,:)=y7
wks = gsn_open_wks("pdf","xy")  

res1             = True
res2             = True
res3             = True
res1@tiXAxisString= "Hour(h)"
res1@tiYAxisString    ="AQI/O3/PM10(ppmv)"
res2@tiYAxisString    = "PM2.5/SO2/NO2(ppmv)"
res3@tiYAxisString    = "CO(ppmv)"
res1@xyMonoDashPattern=True
res2@xyMonoDashPattern=True
res3@xyMonoDashPattern=True
res1@xyLineColors =(/"purple","khaki4","black"/)      
res2@xyLineColors =  (/ "green","blue","brown"/)  
res3@xyLineColors = "red"

res1@xyMarkLineModes="MarkLines"
res1@xyMarkers      = (/16,16,16/)
res1@xyMarkerColors =(/"purple","khaki4","black"/)
res2@xyMarkLineModes="MarkLines"
res2@xyMarkers      = (/16,16,16/)
res2@xyMarkerColors =(/ "green","blue","brown"/)
res3@xyMarkLineModes="MarkLines"
res3@xyMarkers      = 16
res3@xyMarkerColors = "red"

plot= gsn_csm_xy3(wks,x,data_all1,data_all2,data_all3,res1,res2,res3)

lgres                    = True
lgres@lgLineColors       = (/"purple","khaki4","black","green","blue","brown","red"/)
lgres@lgItemType         = "Lines"        ; show lines only (default)
lgres@lgLabelFontHeightF = .045         ; legend label font thickness
lgres@vpWidthF           = 0.1    ; width of legend (NDC)
lgres@vpHeightF          = 0.09        ; height of legend (NDC)
lgres@lgMonoDashIndex    = True
lgres@lgDashIndex        = 0
lgres@lgPerimOn          = False               ; turn off box around
labels = (/"AQI","O3","PM10","PM2.5","SO2","NO2","CO"/)
nitems = dimsizes(labels)                 ; number of legend items
lbid = gsn_create_legend(wks,nitems,labels,lgres)
amres                  = True
amres@amJust           = "BottomCenter"
amres@amParallelPosF   = -0.43       ; Move legend to right
amres@amOrthogonalPosF = -0.18        ; Move legend down.
annoid = gsn_add_annotation(plot,lbid,amres)  ; add legend to plot
psres = True                                                               
maximize_output(wks,psres)  ; calls draw and frame for you
end


好吧,刚已找到问题,原来res1@xyMarkLineModes="MarkLines"应该写成res2@xyMarkLineModes=(/"MarkLines","MarkLines","MarkLines"/),标记几条线后面就该写上几个"MarkLines“。出来的图如下。

KYL}TU[E5OBOURL4G)E343H.png
QQ图片20151230171332.png
密码修改失败请联系微信:mofangbao
发表于 2015-12-30 16:58:48 | 显示全部楼层
图呢
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

 楼主| 发表于 2015-12-30 17:16:56 | 显示全部楼层
本帖最后由 悠然一梦123 于 2015-12-30 17:18 编辑

@andrewsoong 已经上传,之前网速不好没弄上
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2015-12-31 09:13:10 | 显示全部楼层
为什么没有人回答我呢,做标记是这几句res1@xyMarkLineModes="MarkLines"
res1@xyMarkers      = (/16,16,16/)
res1@xyMarkerColors =(/"purple","khaki4","black"/)
res2@xyMarkLineModes="MarkLines"
res2@xyMarkers      = (/16,16,16/)
res2@xyMarkerColors =(/ "green","blue","brown"/)
res3@xyMarkLineModes="MarkLines"
res3@xyMarkers      = 16
res3@xyMarkerColors = "red"
,可画出来的为什么没有全被标记
密码修改失败请联系微信:mofangbao
发表于 2016-1-2 22:58:04 | 显示全部楼层
好图 学习了
密码修改失败请联系微信:mofangbao
发表于 2016-11-21 14:36:36 | 显示全部楼层
太好了,通过这个找到了我的问题,
密码修改失败请联系微信:mofangbao
发表于 2016-11-22 16:38:01 | 显示全部楼层
{:eb502:}{:eb502:}{:eb502:}{:eb502:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

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

本版积分规则

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

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

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