Color Scheme
Find People
Username
Password
Sign Up
old site http://222.195.74.11/
中文版 Location: Homepage >> Xianghui Xue : CV - Publications - Blog

Personal Note

idl_tips

Link to this poster Source Code
Originated by Xianghui Xue at 2010-02-18 11:57 CST, Last modified at 2010-02-18 11:57 CST.

Contents

1 contour different values with different colors Contents Top
在画contour彩色图的时候,试图将正值和负值区分开,比如正值用蓝色表示,负值用红色表示,而0值用白色表示。

这样可以自己定义颜色表:在idl中,每个颜色都可以用r,g,b三个矢量来表示;而红色表示为(255,0,0),蓝色表示为(0,0,255),白色表示为(255,255,255)。这样对于前面提出的希望由负到正,生成一个蓝->白->红的颜色表,对于r,g,b三个量的变化,分别是:
 r: 0-> 255 -> 255  (蓝- 白 -红)  
 g: 0-> 255 -> 0
 b: 255->255->0
因此如果生成一个256元素的颜色表,可以用下面的程序来做,同时保存为mytb.sav

ncols = 128
;First from blue -> white
f = FINDGEN(ncols) / (ncols - 1)
; Red vector: 0 -> 255
rVec = 255 * f
; Green vector: 0 -> 255
gVec = rVec
; Blue vector: 255 -> 255
bVec = 255 + fltarr(ncols)

; Next from white -> red
; Red vector: 255 -> 255
rVec = [rVec, 255+fltarr(ncols)]
; Green vector: 255 -> 0
gVec = [gVec, 255 - 255 * f]
; Blue vector: 255 -> 0
bVec = [bVec, 255 - 255 * f]

TVLCT, rVec, gVec, bVec
save, rVec, gVec, bVec, filename='mytb.sav'

在程序调用此颜色表是,可以使用如下命令:
restore, 'mytb.sav'
tvlct,rVec,gVec, bVec

但是注意到,此颜色表在生成的时候是对称,及蓝色和红色相对于白色对称。而数据中正值和负值的分布往往不对称,一种解决方案是将正值负值分别设定不同的contour levels,但保持两者中nlevels相同。如:
minz=min(data)
maxz=max(data)
nlevels=40
levels1=(findgen(nlevels/2)+0.00001)/(nlevels/2)*(0-minz)+minz   ; 负值部分
levels2=(findgen(nlevels/2)+0.00001)/(nlevels/2)*(maxz-0)+0      ; 正值部分
levels=[levels1,levels2]
这样在contour的时候,就自动满足负值蓝色,正值红色,0值白色的分布。


另一中解决方法是,根据需要画图的levels,计算正值,负值的各自的nlevels,然后利用各自的nlevels去调整颜色表的蓝色和红色的ncols的值,生成一个不对称的颜色表,这样相对比较繁琐。
Source Code
Originated by Xianghui Xue at 2010-02-18 12:22 CST, Last modified at 2010-02-18 12:22 CST.


Locations | Statistics | FAQ
Best view under the 1024x768 resolution and with the normal size of fonts.
Designed & developed by Yuming Wang, run for 6432 days since December 15, 2006, and last upgraded on May 28th, 2009.
Powered by Apache + PHP coded cOpfOs 3.11.1 last upgraded on February 22nd, 2010.
Copyright © 2006, all rights reserved.