IDL直接图形法绘制图例的两种方法

在使用直接法绘制矢量图的时候,需要绘制相关图例。关于直接图形法绘制矢量图,我写了两篇文章,你可以看这里:IDL遥感应用入门(9):改进利用QuikScat数据绘制风速矢量图这是对教程5的更新升级,利用本文的方法可以绘制出图例,这是改进之后的方法,这里将两种方法列举出来,供大家学习对比只用。

方法一

这种方法的思想是,绘制完矢量图之后,重新绘制图例。示例代码如下:
  u=ws*sin(dir)
  v=ws*cos(dir)
  x=findgen(1440)*0.25
  y=findgen(720)*0.25-90
  x=congrid(x,180)
  y=congrid(y,90)
  ;图例数组
  uscale=fltarr(180,90)
  uscale(50,70)=10
  vscale=fltarr(180,90)
  window,data,xsize=1440,ysize=720
  name=strarr(7)
  name[data]=string(20060700+data+1)
  map_set,0,180,0,title=name(data),/continents,/grid,/label
  velovect,u,v,x,y,missing=250*0.2,/overplot
  velovect,uscale,vscale,x,y,color='FF0000'xl,/overplot
从示例代码中可以看出,这里绘制了两次velovect。

方法二

方法一中给了我们一个新的思考,方法一采用的绘制两次vector的方法实现了图例的绘制,那能不能把两次合并成一次呢?当然可以,可以发现方法一是把(50,70)这个点作为图例,同理,我们可以把原来的uv数组对应的(50,70)直接赋值即可。示例代码如下:
;构建vector函数所需参数
  u=ws*sin(dir)
  v=ws*cos(dir)
  x=findgen(1440)*0.25
  y=findgen(720)*0.25-90
  x=congrid(x,180)
  y=congrid(y,90)

;构建图例
u(50,70)=30
v(50,70)=0

;出图显示
window,data,xsize=1440,ysize=720
name=strarr(7)
name[data]=string(20060700+data+1)
map_set,0,180,0,title=name(data),/continents,/grid,/label
velovect,u,v,x,y,missing=250*0.2,/overplot


其实方法一和方法二都是IDL遥感应用入门(9):改进利用QuikScat数据绘制风速矢量图一文中的代码,下面是全部代码,代码同样来自@杨铭伦大神。

pro yangminglun5
filename=file_search('D:\3','*.gz')
device,decomposed=1
!p.color=0
!p.background='FFFFFF'xl
for data=0,0 do begin
  a=bytarr(1440,720,3)
  openr,lun,filename[data],/compress,/get_lun
  readu,lun,a
  free_lun,lun
  ws=congrid(a(*,*,0),180,90)*0.2
  ;print,ws
  dir=congrid(a(*,*,1),180,90)*1.5/180*!pi
  u=ws*sin(dir)
  v=ws*cos(dir)
  x=findgen(1440)*0.25
  y=findgen(720)*0.25-90
  x=congrid(x,180)
  y=congrid(y,90)
  ;图例数组
  uscale=fltarr(180,90)
  uscale(50,70)=30
  vscale=fltarr(180,90)
  window,data,xsize=1440,ysize=720
  name=strarr(7)
  name[data]=string(20060700+data+1)
  map_set,0,180,0,title=name(data),/continents,/grid,/label
  velovect,u,v,x,y,missing=250*0.2,/overplot
  velovect,uscale,vscale,x,y,color='FF0000'xl,/overplot
  xyouts,103,49,'10m/s',color='FF0000'xl
 endfor
end
感兴趣的可以用这个代码替换教程9的代码,可以对这两种方法做一个对比。
IDL遥感应用入门(9):改进利用QuikScat数据绘制风速矢量图 IDL中两种绘图方式:直接图形法 和 对象图形法

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

发表评论