爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3258|回复: 2

[求助] IDL线段配色的困惑

[复制链接]

新浪微博达人勋

发表于 2018-9-18 13:47:53 | 显示全部楼层 |阅读模式

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

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

x
IDL的线段配色给我制造了很大的困扰,
以33号色条(蓝-绿-黄-红)为例,
该色条有256阶,与数字对应方式是一一对应,而不是连续的,这样导致:
如果元素较少,那么匹配出来的只有蓝绿色,
如果元素多,色条颜色就循环使用,
对于同一个数字,匹配的颜色也不一样,如下图:
TIM截图20180918134448.jpg
照此规律,我只能画256个点!
岂不是坑爹?

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

新浪微博达人勋

 楼主| 发表于 2018-9-19 14:15:24 | 显示全部楼层
之前,为了琢磨颜色与数值的对应关系,编写过一个函数,拆的是33号色条,数值minV和maxV对应着色条的两端,x是要配色的数,输出的是个三个元素的向量,表示颜色

function rgb_table_33,x,minV,maxV
  MINV=MINV+0.0
  MAXV=MAXV+0.0
  L=(MAXV-MINV)/8.0
  IF(X GE MINV AND X LT MINV+L)THEN BEGIN
    R=0.0
    G=0.0
    B=127.5/L*X+127.5
  ENDIF
  IF(X GE MINV+L AND X LT MINV+3*L)THEN BEGIN
    R=0.0
    G=127.5/L*(X-L)
    B=255.0
  ENDIF
  IF(X GE MINV+3*L AND X LT MINV+5*L)THEN BEGIN
    R=127.5/L*(X-3*L)
    G=255.0
    B=-127.5/L*(X-5*L)
  ENDIF
  IF(X GE MINV+5*L AND X LT MINV+7*L)THEN BEGIN
    R=255.0
    G=-127.5/L*(X-7*L)
    B=0.0
  ENDIF
  IF(X GE MINV+7*L AND X LE MAXV)THEN BEGIN
    R=-127.5/L*(X-9*L)
    G=0.0
    B=0.0
  ENDIF
  RETURN,[R,G,B]
end
现在借用这个函数,我再写个函数,把数组将用到的3列N行的[R,G,B]数据算出来,
该函数的因数x是个向量,有n个元素,函数返回值是3列n行的数组,代表颜色,以后可以与vert_colors匹配
function rgb_table_33_vert,x
n=n_elements(x)
minv=min(x)
maxv=max(x)
colors=[-99,-99,-99]
for i=0,n-1 do begin
  colors=[[colors],[rgb_table_33(x,minv,maxv)]]
endfor
return,colors[*,1:-1]
end

画图:
a=indgen(500)
vertcolor=rgb_table_33_vert(a)
fig=plot(a,thick=10,vert_colors=vertcolor)

TIM截图20180919141835.jpg



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

新浪微博达人勋

 楼主| 发表于 2018-9-19 14:28:53 | 显示全部楼层
借助以上2个函数,可以绘制三维彩色散点图,数据见附件,数据格式:经度-纬度-PM10浓度
读取数据:

  a=read_ascii('C:\Users\Administrator\Desktop\1.txt',data_start=0)
  x=a.field1
提取并转换为向量:
  lon=transpose(x[0,*])
  lat=transpose(x[1,*])
  pm10=transpose(x[2,*])
把PM10匹配的颜色算出来:
  vertcolor=rgb_table_33_vert(pm10)
画图:
  s=plot3d(lon,lat,pm10,linestyle=6,sym=24,sym_filled=1,sym_size=1,$
    vert_colors=vertcolor)
旋转为从z方向俯视的样子
  s.Rotate, /RESET
  s.Rotate, 0, /ZAXIS
  s.Rotate, 0, /XAXIS
  s.Rotate, 0, /YAXIS

TIM截图20180919143134.jpg
鼠标转两下查看立体状态:
TIM截图20180919142715.jpg


1.txt

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

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

本版积分规则

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

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

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