CPT類型¶
CPT文件可以分成兩類,一種適用於分類數據,一種適用於常規數據。下面會逐一介紹兩種類型的CPT文件的格式,以及其如何實現數值與顏色之間的映射。
分類CPT¶
分類CPT文件適用於分類數據。所謂分類數據,是指數據只能取有限個離散的值。比如將陸地分爲不同的類型:沙漠、森林、冰川等等。定義1代表沙漠,2代表森林,3代表冰川。顯然值取1.5是沒有意義的。
分類CPT文件的格式爲:
<key1> <fill1> [;<label1>]
<key2> <fill2> [;<label2>]
...
<keyn> <filln> [;<labeln>]
B <fill_background>
F <fill_foreground>
N <fill_nan>
其中:
<key>
是分類數據的可能取值。<key>
必須單調遞增但可不連續<fill>
是相應數據的填充色。可以是顏色,也可以是圖案,見 填充<label>
則是數據的標籤(可選)。通常設置爲類型名,其主要有兩個用途:讓用戶知道每一個可能取值代表的具體類型;在使用 colorbar 繪製色標時可以將標籤顯示到色標旁邊。
<key>
還可以取以下特殊值:
B
:定義小於<key1>
的值的填充色,即背景色,默認值由 COLOR_BACKGROUND 控制F
:定義大於<keyn>
的值的填充色,即前景色,默認值由 COLOR_FOREGROUND 控制N
:定義值爲 NaN 時使用的填充色,默認值由 COLOR_NAN 控制
下面是一個分類CPT文件的示例:
0 yellow ;desert
1 green ;forest
2 red ;iceland
從中可以看出CPT文件是如何完成數據與顏色之間的映射:
- 當數據值爲0時,其填充色爲黃色,代表沙漠
- 當數據值爲1時,其填充色爲綠色,代表森林
- 當數據值爲2時,其填充色爲紅色,代表冰川
常規CPT¶
常規CPT文件適用於連續變化的數據。對於連續變化的數據,無法爲每個可能的數據值都指定顏色,通常的做法是爲某些特定值指定顏色,其它值的顏色則通過插值得到。
常規CPT文件的格式爲:
<z0> <color_min_1> <z1> <color_max_1> [L|U|B] [;<label>]
<z1> <color_min_2> <z2> <color_max_2> [L|U|B] [;<label>]
...
<zn-1> <color_min_n> <zn> <color_max_n> [L|U|B] [;<label>]
B <fill_background>
F <fill_foreground>
N <fill_nan>
常規CPT文件中的每一行均定義了一個Z值範圍所對應的顏色範圍。以第一行爲例,其定義了數據值爲 <z0>
時的顏色爲 <color_min_1>
,數據值爲 <z1>
時的顏色爲 <color_max_1>
,而數據值位於 <z0>
到
<z1>
之間時顏色則通過對 <color_min_1>
和 <color_max_1>
線性或非線性插值得到。由此即定義了任意數值與顏色之間的映射關係。
在每一行後面,還可以加上兩個可選項:
;<label>
是Z值範圍所對應的標籤,使用 colorbar 模塊繪製色標時加上-L
選項則會將<label>
作爲色標的標註L|U|B
用於控制繪製色標時標註的放置位置。L
、U
、B
分別標註每個Z值範圍的下限、上限或者同時標註Z值上下限
Z值還可以取以下特殊值:
B
:定義小於<z0>
的值的填充色,即背景色,默認值由 COLOR_BACKGROUND 控制F
:定義大於<zn>
的值的填充色,即前景色,默認值由 COLOR_FOREGROUND 控制N
:定義值爲 NaN 時使用的填充色,默認值由 COLOR_NAN 控制
GMT對於常規CPT文件的格式由如下要求:
- Z值必須單調遞增
- Z值不能存在間斷,即每行的最大Z值必須與下一行的最小Z值相同
B|F|N
語句要放在CPT文件的開頭或結尾- 可以指定顏色也可以指定填充圖案,若
<color_min_1>
指定了填充圖案,則<color_max_1>
必須設置爲-
常規CPT文件的格式是相對比較靈活的,其又可以進一步細分爲連續型CPT和間斷性CPT:
- 連續型CPT
當一行的最大Z值與下一行的最小Z值對應同一個顏色
例如,下面的示例CPT文件中在Z取0.5處顏色是連續的:
0 black 0.5 red 0.5 red 1 yellow
- 間斷型CPT
即某一行的最大Z值與下一行的最小Z值對應不同的顏色。
例如,下面的示例CPT文件中,第一行表明Z取0.5時爲紅色,第二行表明Z取0.5時爲藍色,即在Z取0.5處顏色存在間斷:
0 black 0.5 red 0.5 blue 1 yellow
進一步,當某一行內最小Z值和最大Z值對應相同的顏色時則構成了單色間斷型CPT。例如,下面的示例CPT文件中,第一行指定了Z取0和0.5均定義爲黑色,意味着Z取0到 0.5之間的任意數值均爲黑色。第二行則指定了Z取0.5到1之間的任意數值均爲紅色:
0 black 0.5 black 0.5 red 1 red