- 积分
- 3638
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-10-21
- 最后登录
- 1970-1-1
|
楼主 |
发表于 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)
|
|