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 用於控制繪製色標時標註的放置位置。LUB分別標註每個Z值範圍的下限、上限或者同時標註Z值上下限

Z值還可以取以下特殊值:

  • B:定義小於 <z0> 的值的填充色,即背景色,默認值由 COLOR_BACKGROUND 控制
  • F:定義大於 <zn> 的值的填充色,即前景色,默認值由 COLOR_FOREGROUND 控制
  • N:定義值爲 NaN 時使用的填充色,默認值由 COLOR_NAN 控制

GMT對於常規CPT文件的格式由如下要求:

  1. Z值必須單調遞增
  2. Z值不能存在間斷,即每行的最大Z值必須與下一行的最小Z值相同
  3. B|F|N 語句要放在CPT文件的開頭或結尾
  4. 可以指定顏色也可以指定填充圖案,若 <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