- 积分
- 3638
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-10-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
用蓝-绿-黄-红色条表示值的大小是普遍用法,我之前一直用IDL的33号色条,
但我发现,最小值和最大值对应的颜色居然都偏黑,这岂不是会混淆?
所以我想最小值就用纯蓝,最大值就用纯红,
33号色条按RGB通道分解,每个通道的曲线如下,
可以截取33号色条中间一段,构建新色条
;输入值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
使用一下,效果不错!
A=FINDGEN(100)
FIG=PLOT(A,VERT_COLORS=red_blue_colorbar(A,0,99),thick=10)
|
|