爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 2602|回复: 0

[混合编程] IDL之伪彩线问题的解决

[复制链接]

新浪微博达人勋

发表于 2018-10-8 11:23:23 | 显示全部楼层 |阅读模式

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

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

x
以前画(x,y,z)以z配色的二维曲线老是配不好,如果使用rgb_table它根本不是按z值配色的
幸好后来发现vert_colors关键字可以用来配色,辅之以自己调配的红蓝色条,二维曲线配色问题得以解决
同理,三维彩线也迎刃而解
TIM截图20181008112139.jpg
pro xy_colorbar
;使用vert_colors即可解决二维彩线问题
  a=read_ascii('C:\Users\Administrator\Desktop\dust.txt',$
    DELIMITER=';',data_start=0)
  x=a.field1
  lat=transpose(x[2,*])
  lon=transpose(x[1,*])
  pm=transpose(x[3,*])
  help,lon,lat,pm
  ;给z匹配颜色即可
  colors=red_blue_colorbar(pm,min(pm),max(pm))
  plot=plot(lon,lat,vert_colors=colors,thick=5)
end
;arr是个一维向量,返回值是[R,G,B]三列的数组
;minv是配色下限,maxv是上限
;超过maxv的x值全配以纯红色,低于minv的值全配以纯蓝色
function red_blue_colorbar,ARR,minV,maxV
  MINV=MINV+0.0
  MAXV=MAXV+0.0
  L=(MAXV-MINV)/3.0
  N=N_ELEMENTS(arr)
  COLORS=[-99,-99,-99]
  FOR I=0,N-1 DO BEGIN
    X=ARR[I]
    if(x lt minv)then begin
      R=0
      G=0
      B=255
    endif
    if(x gt maxv)then begin
      R=255
      G=0
      B=0
    endif
    if(x gE MINV and x lt MINV+L)then begin
      R=0.0
      G=255.0/L*(X-MINV)
      B=255.0
    endIF
    if(x GE MINV+L and x LT MINV+L*2)then begin
      R=255.0/L*(X-MINV-L)
      G=255.0
      B=-255.0/L*(X-MINV-L*2)
    endIF
    if(x GE MINV+L*2 and x LE MAXV)then begin
      R=255.0
      G=-255.0/L*(X-MAXV)
      B=0.0
    endIF
    COLORS=[[COLORS],[R,G,B]]
  ENDFOR
  RETURN,COLORS[*,1:-1]
end

dust.txt

21.38 KB, 下载次数: 0, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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