繪製符號

繪製各種類型的符號也是常見的繪圖需求之一。GMT支持繪製十幾種常見的符號類型,還支持自定義複雜的符號類型,足以滿足日常的科研繪圖需求。這一節將介紹如何使用 plot 模塊繪製多樣的符號。

符號一覽

plot 模塊繪製符號需要使用 -S 選項。-S 選項後面緊跟着符號類型代碼,以及符號大小。GMT中常見的十幾種簡單符號及其對應的符號類型代碼如下圖所示。比如 c 代表圓(circle),t 代表三角形(triangle)。

Source Code

../_images/symbols-gmtplot-0.png

繪製簡單符號

以繪製圓圈爲例,通過查詢文件或者看上圖可知,圓圈對應的符號類型代碼爲 c-Sc0.5c 則表示繪製直徑爲0.5釐米的圓圈。爲了繪製圓圈,我們需要給定圓圈的位置,因而輸入數據中需要提供圓圈的X和Y座標。

下面的示例中在(2,3)、(5,6)、(8,2) 三個點繪製了三個直徑爲0.5釐米的圓圈。

gmt begin symbols png,pdf
gmt plot -R0/10/0/10 -JX10c/10c -Baf -Sc0.5c << EOF
2 3
5 6
8 2
EOF
gmt end show
../_images/symbols-gmtplot-1.png

與繪製線段和多邊形類似,我們可以使用 -W 選項控制符號輪廓的畫筆屬性,使用 -G 選項爲符號設置填充色。下面的命令就繪製了三個黑邊紅色圓圈。

gmt begin symbols png,pdf
gmt plot -R0/10/0/10 -JX10c/10c -Baf -Sc0.5c -W1p,black -Gred << EOF
2 3
5 6
8 2
EOF
gmt end show
../_images/symbols-gmtplot-2.png

若想要繪製其它符號,則只需要使用對應的符號類型代碼即可。例如,將 -Sc0.5c 改成 -St0.5c 則會繪製三角形。

當然,某些符號類型可能需要額外的輸入數據。比如 -Sr 表示繪製長方形,此時輸入數據中除了需要長方形的X和Y座標之外,還需要長方形的寬和高,因而輸入數據需要四列。對於這些輸入數據稍複雜的符號,可以閱讀文件以瞭解其輸入數據的格式。

大小變化的符號

若想要繪製大小變化的符號,則需要在輸入數據中額外加上一列以控制每個符號的大小,同時,在 -S 選項中則不再需要指定符號大小。

下面的示例中,-Sc 中沒有指定圓圈大小,此時輸入數據的第三列控制圓圈大小。由此,我們即得到了大小變化的符號。

gmt begin symbols png,pdf
gmt plot -R0/10/0/10 -JX10c/10c -Baf -Sc -W1p,black -Gred << EOF
2 3 0.3
5 6 0.8
8 2 0.5
EOF
gmt end show
../_images/symbols-gmtplot-3.png

顏色變化的符號

前面提到,使用 -G 選項可以爲符號填充顏色,但其只能同時爲所有符號指定單一的顏色。如果想要讓符號的顏色根據某個數值的不同而使用不同的顏色,則需要使用 -C 選項。 -C 選項表示符號的填充色由某個數值以及CPT顏色表所控制。CPT顏色表給出了數值與顏色之間的對應關係。因而對於任意一個符號,我們都可以給其一個數值,GMT會根據該數值從CPT顏色表中找到對應的顏色作爲該符號的填充色。因而,在輸入數據中,我們需要在 X和Y座標的基礎上額外加一列Z值,用於控制符號的填充色。

下面的示例中,我們首先使用 makecpt 模塊,以GMT內置CPT顏色表 hot 爲基礎,生成了一個新的CPT顏色表。關於CPT顏色表的具體細節在後面會介紹到。此處,讀者只需要知道,我們製作了一個CPT文件供後面的命令使用。該CPT顏色表爲0到3之內的每個數值都對應了一個顏色。

同時,對於輸入數據,我們額外增加一列(通常稱這一列爲Z值),該列的值決定了符號的填充色。

gmt begin symbols png,pdf
gmt makecpt -Chot -T0/3/1
gmt plot -R0/10/0/10 -JX10c/10c -Baf -Sc0.5c -W1p,black -C << EOF
2   3   0
5   6   1
8   2   2
EOF
gmt end show
../_images/symbols-gmtplot-4.png

繪製不同的符號

前面說到,-S 選項中指定不同的符號類型代碼則代表繪製不同的符號,但每次只能指定一種符號類型代碼。如果想要不同的數據使用不同的符號繪製,則可以只指定符號大小而不指定符號類型代碼,並在輸入數據的最後一列指定符號類型代碼。

下面的示例中,我們使用 -S0.5c 指定了符號的大小,但是沒有指定符號類型。輸入數據的最後一列中 cti 則分別爲三個數據指定了各自的符號類型。

gmt begin symbols png,pdf
gmt basemap -R0/10/0/10 -JX10c/10c -Baf
gmt plot -S0.5c -W1p,black -Gred << EOF
2 3 c
5 6 t
8 2 i
EOF
gmt end show
../_images/symbols-gmtplot-5.png

大小、顏色和符號類型都變化的符號

前面介紹瞭如何繪製大小變化或顏色變化或符號類型變化的符號。那麼如何實現顏色、大小以及符號三者都變化的符號呢?可以使用 -S 但不指定符號類型以及符號大小,同時使用 -C 選項。

關鍵問題在於,此時的數據數據格式是怎樣的。根據GMT的規定,此時輸入數據的格式爲:

X   Y   Z   size    symbol

即第三列控制符號填充色,第四列爲符號大小,最後一列爲符號類型代碼。

gmt begin symbols png,pdf
gmt makecpt -Chot -T0/3/1
gmt plot -R0/10/0/10 -JX10c/10c -Baf -S -W1p,black -C << EOF
2   3   0   0.3 c
5   6   1   0.8 t
8   2   2   0.5 i
EOF
gmt end show
../_images/symbols-gmtplot-6.png