January 21, 2013

建立紅-白-藍色表 - How to create a R-W-B color table in IDL

在大氣裡面,有很多機會看在天氣圖或是變差圖上到紅白藍三色的色表。我把 David W. Fanning's website talking about "Constructing a Color Table in IDL" 上的簡單色表程式稍微改寫了一下,就完成了我們常用的這個紅白藍色表。這一篇告訴你怎麼建立這個色表;下一篇,我再說明怎麼把它用在IDL的繪圖上面。 (1) 紅白藍矩陣的設定: 第一部份,設定紅色漸層至白色。第二部份則由白色漸深至藍色。

pro color_table_RWB

device, decomposed=0
ncolors = 255
steps = 128
scaleFactor = FINDGEN(steps) / (steps - 1)
; Do first half colors (red to white).
; Red vector: 255 -> 0
R = REPLICATE(ncolors, steps)
; Green vector: 255 -> 0
G = 0 + (0 + ncolors) * scaleFactor
; Blue vector: 0 -> 255
B = 0 + (0 + ncolors) * scaleFactor

; Do second 100 colors (whie to blue).
;Red vector: 0 -> 255
R = [R, reverse(0 + (ncolors + 0) * scaleFactor)]
; Green vector: 0 -> 0
G = [G, reverse(0 + (ncolors - 0) * scaleFactor)]
; Blue vector: 255 -> 0
B = [B, REPLICATE(ncolors, steps)]
(2) 列出RGB三矩陣裡的顏色設定值: 色階總數設定為 255+1 (值從0到255),如果你不想用這麼多色階,可從這個loop 印出所有色階的值供你撿用。 或者,就由設定間隔值,可以直接取得等量色階,然後你就可以自行設定所需的色表。
k = 0
for i = 0, ncolors-1, 16 do begin
print, i, R(i), G(i), B(i), k
k = k + 1
endfor
(3)螢幕快速顯示色表:
TVLCT, R, G, B

;display the sample
image = FINDGEN(255) # REPLICATE(1, 60)
WINDOW, XSIZE=255, YSIZE=60
TV, BYTE(image)
END
(4) 從(2) output 的色階代碼:
color# Red Green Blue
0 255.000 0.000000 0.000000 0
16 255.000 32.1260 32.1260 1
32 255.000 64.2520 64.2520 2
48 255.000 96.3780 96.3780 3
64 255.000 128.504 128.504 4
80 255.000 160.630 160.630 5
96 255.000 192.756 192.756 6
112 255.000 224.882 224.882 7
128 255.000 255.000 255.000 8
144 222.874 222.874 255.000 9
160 190.748 190.748 255.000 10
176 158.622 158.622 255.000 11
192 126.496 126.496 255.000 12
208 94.3701 94.3701 255.000 13
224 62.2441 62.2441 255.000 14
240 30.1181 30.1181 255.000 15
(5)最後執行這個程式後,你可以在螢幕上看到如下的紅白藍色表。

0 comments:

Post a Comment

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Blogger Theme by Lasantha - Premium Blogger Templates | Affiliate Network Reviews