繪製修飾物

GMT除了可以繪製線段、符號、矢量外,還可以繪製如下修飾物:

  1. 地圖比例尺
  2. 色標
  3. 圖例
  4. 方向玫瑰圖
  5. 磁場玫瑰圖
  6. 疊加圖片
  7. GMT logo
  8. 小圖(map inset)

這8個修飾物可以用不同的模塊繪製,且有各自的語法。所有這些修飾物都可以抽象爲一個矩形元素。這一節介紹一種通用的機制,以指定這些修飾物在圖上的位置以及修飾物的背景面板。

定位

繪製修飾物的模塊大多有一個選項用於指定修飾物在底圖上的位置,其基本語法爲:

[g|j|J|n|x]<refpoint>[+j<justify>][+o<dx>[/<dy>]]

爲了精確地將修飾物放在底圖上的任意一點,GMT需要做四件事:

  1. 通過 [g|j|J|n|x]<refpoint> 指定底圖上的一個參考點
  2. 通過 +j<justify> 指定修飾物上的一個錨點
  3. 通過 +o<dx>[/<dy>] 對修飾物的錨點做偏移
  4. 將修飾物的偏移後的錨點與底圖上的參考點重合以實現修飾物的放置

下圖展示了GMT如何實現修飾物的精確放置。其中大矩形代表底圖,小矩形代表修飾物。本示例中首先指定了底圖左上角爲參考點,並指定了修飾物的左上角爲錨點,通過 +o<dx>/<dy> 對修飾物錨點進行微調。

Source Code

../_images/embellishment-gmtplot-0.png

底圖參考點

GMT提供了5種方法用於指定底圖的參考點,使得用戶可以靈活地指定底圖內/外的任意一點作爲參考點。五種方法分別以 x|g|n|j|J 開頭。若未指定使用何種方式,則默認使用 x 方式指定參考點。

通過座標指定參考點

數據座標
g<lon>/<lat> 指定參考點的數據座標。例如 g135/20 表示參考點的座標爲 135/20
繪圖座標
x<X>/<Y> 指定參考點的繪圖座標,即給出參考點相對於繪圖原點的偏移距,例如 x4c/2c 表示參考點位於底圖原點的右側4釐米,上方2釐米處
歸一化座標
n<X>/<Y> 指定參考點的歸一化座標。歸一化座標是指,底圖所對應的矩形的 X軸範圍爲0到1,Y軸同理。使用負值或者大於1的值則可以指定底圖外的一點爲參考點。比如 n0.2/0.1

通過錨點指定參考點

可以用 j<anchor>J<anchor> 的方式指定底圖的某個錨點作爲底圖參考點。其中錨點 <anchor> 有9個可能的取值,在 錨點 一節中已經詳細介紹過。例如 jTL 指定了底圖左上角爲參考點。

使用 j<anchor>J<anchor> 方式指定底圖參考點的同時,也設置了修飾物上默認使用的錨點位置。使用 j<anchor> 方式修飾物的默認錨點與參考點錨點相同。例如 jTL 指定底圖左上角爲參考點,同時也指定了修飾物左上角爲其錨點,即底圖左上角與修飾物左上角重合,則修飾物位於底圖左上角的內部。當需要將修飾物放在底圖內部某個角落、某條邊的中心或圖的中心時,建議使用 j

使用 J<anchor> 方式,修飾物的默認錨點是與底圖參考點錨點呈鏡像相反。例如 JTL 指定底圖的左上角作爲參考點,同時指定了修飾物的默認錨點是 BR 即右下角(鏡像對稱)。因而底圖的左上角與修飾物的右下角重合,則修飾物位於底圖左上角的外部。當需要將修飾物放在底圖的外部時,建議使用 J

修飾物錨點

在指定底圖參考點後,可以進一步用 +j<anchor> 指定修飾物上的錨點。

若未使用 +j<anchor> 指定錨點,則修飾物的錨點按如下規則取默認值:

  1. 若使用 j<anchor> 方式指定底圖參考點,則修飾物錨點與底圖錨點相同
  2. 若使用 J<anchor> 方式指定底圖參考點,則修飾物錨點使用與底圖參考點鏡像相反的錨點
  3. 若使用其它三種方式指定參考點,對於玫瑰圖和比例尺而言,錨點默認爲 MC,其他修飾物錨點默認爲 BL

修飾物錨點偏移量

指定底圖參考點和修飾物錨點後,即可將二者重合起來,實現修飾物在底圖上的定位。在此基礎上,可以額外使用 +o<dx>/<dy> 指定修飾物錨點的偏移量。尤其是在使用 jJ 指定底圖參考點時,由於底圖只能指定某個錨點作爲參考點,因而就需要爲修飾物錨點指定額外的偏移量以增加定位的靈活性。偏移量爲正值表示沿着與指定錨點所使用的對齊代碼同一方向作偏移。

比如使用 jTL 指定底圖左上角爲參考點,同時修飾物的左上角錨點也被選中,此時使用 +o2c/1c 表示將修飾物的左上角錨點向左移動 2 cm、向上移動 1 cm,最後將底圖參考點與偏移後的錨點對齊。

背景面板

對於任意一個修飾物,GMT都可以爲其繪製一個背景面板。背景面板的位置和大小由修飾物直接決定。除此之外,背景面板還有一些其他屬性。背景面板的屬性由 -F 選項的子選項決定:

-F[+c<clearance(s)>][+g<fill>][+i[[<gap>/]<pen>]][+p[<pen>]][+r[<radius>]][+s[<dx>/<dy>/][<fill>]]
  • +g<fill> 指定面板填充色,默認不填充
  • +p<pen> 繪製面板邊框。<pen> 爲邊框的畫筆屬性,若不指定 <pen> 則默認使用默認使用 MAP_FRAME_PEN 的值
  • +r<radius> 繪製圓角邊框,<radius> 爲圓角的半徑
  • +i<gap>/<pen> 在邊框內部繪製一個內邊框,<gap> 是內外邊框的空白距離(默認值爲2p),<pen> 爲內邊框的畫筆屬性,比如 +i0.1c/thin,dahsed,默認使用 MAP_DEFAULT_PEN
  • +c<clearance> 設置修飾物與面板之間的空白距離。默認情況下面板的大小由修飾物的大小決定,可以使用該子選項爲面板增加額外的尺寸:
    • +c<gap> 爲四個方向增加相同的空白距離
    • +c<xgap>/<ygap> 分別爲X方向和Y方向指定不同的空白距離
    • +c<lgap>/<rgap>/<bgap>/<tgap> 分別爲四個方向指定不同的空白距離
  • +s<dx>/<dy>/<fill> 下拉陰影區。<dx>/<dy> 是陰影區相對於面板的偏移量, <shade> 是陰影區的顏色,默認值爲 4p/-4p/gray50

Source Code

../_images/embellishment-gmtplot-1.png

GMT修飾物背景面板

左圖使用了 -F+glightgreen+r,右圖使用了 -F+p1p+i+s+glightblue+c0.1i (不包含最內側虛線框)