畫筆

有畫筆才能畫線條、三角形、圓形等各種複雜的形狀。

GMT中的畫筆有三個屬性:筆寬、顏色和線型,三者用逗號分隔,即 width,color,style

在 GMT 模塊的語法介紹中,一般用 pen 表示畫筆屬性,讀者在見到 pen 時應自行腦補成 width,color,style

在指定畫筆屬性時,可以指定三個屬性中的任意一個或多個屬性,但要保證屬性的相對順序。

畫筆線寬

GMT中可以通過兩種方式指定畫筆寬度:

  1. 寬度值+單位,即 widthc|i|p

    在不指定線寬單位時,GMT使用的默認線寬單位爲 p。除了 p 之外,還可以使用 ci 指定線寬單位爲釐米或英寸。

    推薦只使用 p 作爲線寬單位,畢竟多數情況下線條的寬度都比較小,用“小”單位 p 作爲單位更方便些。且建議總是顯式指定線寬單位,以使得命令的參數更加易讀,比如 1p0.25p

  2. 預定義畫筆寬度名

    對於一些常用的畫筆寬度,GMT將其定義爲特定的名字,以方便用戶使用。下表中列出了GMT預定義畫筆寬度名及其對應的線寬。

    GMT預定義畫筆寬度名
    線寬名 線寬 線寬名 線寬
    faint 0 thicker 1.5p
    default 0.25p thickest 2p
    thinnest 0.25p fat 3p
    thinner 0.50p fatter 6p
    thin 0.75p fattest 10p
    thick 1.0p obese 18p

注解

指定線寬爲 0p 或者 faint 並不表示不繪製線段,而是指定了畫筆的寬度爲最細寬度。畫筆的實際最細寬度由具體的設備來決定。通常情況下,線寬爲 0p 的線條在圖片縮放時線條寬度總是保持最小值。

畫筆顏色

顏色 中已經介紹瞭如何指定顏色,所有的顏色均可用於指定畫筆的顏色。

畫筆線型

畫筆線型屬性 style 控制了線條的外觀,可以用四種方式表示:

  1. 簡單符號

    • . 表示點線
    • - 表示虛線
  2. 組合符號

    通過對簡單符號的任意組合可以獲得更多的線型,比如 .- 表示點劃線,..- 表示兩個點號與一個破折號交替出現。

  3. 預定義線型名

    GMT預定義了幾種線型名,包括:

    • solid:即實線;
    • dashed:即虛線,等效於 -
    • dotted:即點線,等效於 .
    • dashdot:劃點線,等效於 -.
    • dotdash:點劃線,等效於 .-

注解

.- 的絕對長度由畫筆寬度來決定。 . 的長度等於畫筆寬度;- 的長度爲8倍畫筆寬度;點線或虛線中段間空白的長度爲4倍畫筆寬度。

  1. 複雜線型

    通過 string[:offset] 的形式可以自定義任意複雜的線型。

    string 是一系列由下劃線 _ 分隔的數字組成。這一系列數字中,第奇數個數字表示實線的長度,第偶數個數字表示空白的長度。通過實線和空白的長度的不同組合,即可構成多種複雜的線型。 offset 表示線段開始處整個線型的初始相位移動(默認值爲0)。

    例如,4_8_5_8:2 表示線型首先是長度爲 4p 的實線,然後是長度爲 8p 的空白,緊接着長度爲 5p 的實線和長度爲 8p 的空白,然後按照該模式不斷重複。此處的 offset 值爲 2p,因而線段的最開始處,第一條實線的長度 4p 經過相移後長度爲 2p

    線型中的這些數值,默認單位是 p,也可以使用 ci

小練習

下面的命令用 plot 模塊繪製了一條線段。讀者可以將命令中 -Wpen 中的 pen 修改爲不同的值來理解如何指定不同的畫筆屬性:

gmt plot -R0/10/0/5 -JX10c/5c -Wpen -pdf pens << EOF
0 2
10 2
EOF

Source Code

../_images/pen-gmtplot-0.png

發揮你的想象力,想想如何繪製如下圖所示的黑白相間的鐵軌線?點擊“Source Code”可以查看下圖對應的繪圖腳本。

Source Code

../_images/pen-gmtplot-1.png