NCL折线图-分开的线

目标图形

问题汇总:

1. 怎样把上下错开?

  • y主轴要设置成两倍

  • Y次轴要多算14/15个刻度,label从1015开始,但是Y次轴实际是从1000开始,下面就空了15

2. 不知道这句是什么意思,我以为是最小值。应该是最小的刻度,官网的解释:an array of data location,应该写成数组的,我直接写的0(瞎写)

 

3. 图例怎样对齐

明明设置了一样,还是对齐不了


参考同学的代码后修改如下

 

当我把图例高度修改成一样的时候,也就是0.15,画出来的图是 

修改图例水平位置一致的时候,又变成这样了。只能说参数得自己多调试,明天上课去问问调试思路

最后结果:

Code

begin

	; 读取文件
	
	slp = asciiread("slp.22.5N_112.5E_201101.txt",-1,"float")
	air = asciiread("t2m.22.5N_112.5E_201101.txt",-1,"float")
	
	; 打开工作空间
	wksName 			= "2"
	wks 				= gsn_open_wks("png", wksName)
	
	; =====================================================
	; 定义绘图属性 (标题轴、X轴及Y主轴[YL])
	 
	res 							= True
	
	res@gsnDraw 					= False
	res@gsnFrame 					= False
	
	; 标题
	res@tiMainString 				= "2-m Temp and MSLP in Jan2011"
	
	; 不显示 X 次轴的刻度
	res@tmXTOn	 					= False	
	
	; X轴的范围值
	res@trXMinF 					= 0
	res@trXMaxF 					= 32
	
	; Y主轴的范围值
	res@trYMinF 					= 0
	res@trYMaxF 	 				= 28
	
	; X轴及Y主轴的标题
	res@tiXAxisString 				= "Date"
	res@tiYAxisString 				= "temperature (~S~o~N~C)"
	res@tiYAxisOffsetYF 			= -0.15      ;偏移,默认值为0;temperature这个标题的偏移
	
	; X轴的刻度   下X轴
	res@tmXBMode 					= "Explicit"   ;下X轴刻度模式
	res@tmXBValues 					= ispan(1,32,5)  ;指定模式下刻度值
	res@tmXBLabels 					= ispan(1,32,5)  ;指定模式下刻度值对应的标签
	res@tmXBMinorValues 			= ispan(0,32,1)
	
	
	; Y主轴的刻度
	res@tmYLMode 					= "Explicit"
	res@tmYLValues 					= ispan(0,14,2)
	res@tmYLLabels					= ispan(0,14,2)
	res@tmYLMinorValues 			= ispan(0,14,1)
	
	
	; Y主轴标题及刻度的颜色
	res@tiYAxisFontColor 			= "Blue"
	res@tmYLLabelFontColor 			= "Blue"
	res@tmYLMajorLineColor 			= "Blue"
	res@tmYLMinorLineColor 			= "Blue"
	
	; 折线
	res@xyMarkLineMode  			= "MarkLines"     ;分别设定XY曲线只画线,标记,或者都画
	res@xyLineColor					= "blue";设定曲线的颜色
	res@xyMarkerColor				= "blue"
	res@xyMarker 					= 1   ;设定标记的样式
	res@xyMarkerSizeF 				= 0.01    ; 标记的大小
	
	; 参考线   gsn高级接口,辅助线
	res@gsnXRefLine 				= (/7,11,16,30/)  ;XY图中的垂直于X轴的参考线
	res@gsnXRefLineColor 			= (/"black","black","black","black"/)  ;XY图中的垂直于x轴的参考线颜色
	res@gsnXRefLineDashPatterns 		= (/3,3,3,3/)  ;XY图中参考线的样式
	
	; 图例
	res@pmLegendDisplayMode 		= "Always"  ;刻度显示模式
	res@pmLegendWidthF 				= 0.15	;图例宽度
	res@pmLegendHeightF 			= 0.08	;图例高度
	res@pmLegendParallelPosF 		= 0.985	;图例水平位置(向右移动图例)
	res@pmLegendOrthogonalPosF 		= -0.06	;图例垂直位置(向上移动图例)
	res@lgPerimOn 					= False  ;设置图例边框
	
	res@xyExplicitLabels 			= "temperature"	;设置图例中标签
	res@lgLabelFontHeightF 			= 0.02
	res@lgLabelFontColor   			= "blue"
	
	
	; =====================================================
	; 定义绘图属性 (Y次轴[YR])
	
	res2 							= True
	
	res2@gsnDraw 					= False
	res2@gsnFrame 					= False
	
	; Y次轴的范围值
	res2@trYMinF 					= 1000;之前一直不知道怎样错开,之前写的是1015
	res2@trYMaxF 	 				= 1030
	
	; Y次轴的刻度
	res2@tmYRMode 					= "Explicit"
	res2@tmYRValues 				= ispan(1015,1030,3)
	res2@tmYRLabels					= ispan(1015,1030,3)
	res2@tmYRMinorValues 			= ispan(1015,1030,1)

	; Y次轴的标题·
	res2@tiYAxisString 				= "SLP (hPa)"
	res2@tiYAxisOffsetYF 			= 0.15
	
	; 折线
	res2@xyMarkLineMode  			= "MarkLines"     ;分别设定XY曲线只画线,标记,或者都画
	res2@xyLineColor				= "red";设定曲线的颜色
	res2@xyMarkerColor				= "red"
	res2@xyMarker 					= 1   ;设定标记的样式
	res2@xyMarkerSizeF 				= 0.01    ; 标记的大小
	
	; Y次轴标题及刻度的颜色
	res2@tiYAxisFontColor 			= "red"
	res2@tmYRMajorLineColor 		= "red"
	res2@tmYRMinorLineColor 		= "red"
	res2@tmYRLabelFontColor 		= "red"
	
    ; 图例
	res2@pmLegendDisplayMode 		= "Always"  ;刻度显示模式
	res2@pmLegendWidthF 			= 0.15	;图例宽度
	res2@pmLegendHeightF 			= 0.15	;图例高度
	res2@pmLegendParallelPosF 		= 0.9	;图例水平位置(向右移动图例)
	res2@pmLegendOrthogonalPosF 	= -0.06	;图例垂直位置(向上移动图例)
	res2@lgPerimOn 					= False  ;设置图例边框

    res2@xyExplicitLabels 			= "SLP"	;设置图例中标签
	res2@lgLabelFontHeightF 		= 0.02
	res2@lgLabelFontColor   		= "red"
	
	; =====================================================
	; 绘图属性 (添加标记)
	
	resMark							= True
	resMark@gsMarkerColor 			= "Black"
	resMark@gsMarkerThicknessF		= 3.
	resMark@gsMarkerIndex 			= 12
	resMark@gsMarkerSizeF 			= 0.02
	
	; =====================================================
	; 画折线图
	
	plot 				= gsn_csm_xy2(wks,ispan(1,31,1),air,slp,res,res2)
	
	; 添加标记
	plot2 = gsn_add_polymarker(wks, plot, (/7, 11, 16, 31/), (/6.500031, 4.500031, 6.750031, 8.750031/), resMark)
	
	
	; 输出图像
	
	draw(plot)
	frame(wks)
	
end

参考:

 NCL实例三(折线图) - 知乎 (zhihu.com)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/545825414NCL基础讲解(十)——输出篇之绘图:常用属性 (qq.com)icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzA4MTAzMjQzMQ==&mid=402668605&idx=1&sn=5b9b4b7e1f1b497bd67fa151dd8ed72e&scene=23&srcid=0110WhpPifM7fkfF6lWTYGoN#rd

 

 

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值