繪製直方圖

GMT 中 histogram 模塊用於統計並繪製直方圖。直方圖可以直觀地展現樣本的分佈情況。一個直方的寬度表示它的數據範圍,長度表示位於該範圍內的樣本的數量或者比例。

這一節中,我們通過繪製地震震源深度直方圖來介紹直方圖的繪製。以下示例使用的數據爲 eq.dat,數據包含了三列,分別是地震的經度、緯度和深度。

直方圖根據直方的方向可以分爲垂直直方圖和水平直方圖,也可以根據直方的長度的意義不同分爲計數直方圖和百分比直方圖。

垂直直方圖

GMT中默認繪製垂直直方圖。繪製直方圖只需要一列數據,而上面的示例數據有三列。我們需要使用 -i2 選項將輸入數據的第三列(GMT中列號從0開始)傳遞給 histogram

直接使用下面的命令:

gmt histogram eq.dat -i2 -png map

會得到如下報錯信息:

histogram [ERROR]: Required argument for bin width not set
histogram [ERROR]: Option -T: Must specify bin width
histogram [ERROR]: Must specify either fill (-G) or lookup colors (-C), outline pen attributes (-W), or both.

報錯信息告訴我們,histogram 需要使用 -T 選項指定直方的寬度。同時還需要使用 -G 指定直方的填充色,或使用 -W 指定直方邊框的畫筆屬性。根據錯誤信息,我們向上面的命令增加了幾個額外的選項:

  • -T5 設置了統計時每一個直方的寬度是5。該選項還可以更靈活地設置直方的最大最小值等屬性,詳見 histogram 模塊文件
  • -W1p 設置直方的邊框寬度爲1p
  • -Baf 則爲整張圖加了一個自動的邊框
gmt histogram eq.dat -Baf -T5 -W1p -i2 -png hist1
../../_images/index-gmtplot-02.png

垂直直方圖

由此,我們得到了一張非常簡單的直方圖。從直方圖中我們對數據也有了基本的認識。直方圖中橫軸表示數據中地震深度範圍集中在0-40千米。

增加修飾

爲了讓圖形更加的美觀,我們可以添加一些選項:

gmt histogram eq.dat -JX15c/9c -R0/40/0/600 -Bxaf+l"Depth" -Byaf+l"Counts" -BWSen -D -W1p -Gred -T5 -i2 -png hist2
../../_images/index-gmtplot-11.png

添加選項的垂直直方圖

  • -JX15c/9c 指定了整張直方圖的寬度和高度。若不指定,GMT會自動指定一個合適的值
  • -R0/40/0/600 設置了直方圖的數據範圍。若不指定,histogram 會自動確定最適合的數據範圍。這裏我們根據前圖的統計結果指定了新的 -R 範圍
  • -B 選項用於指定底圖邊框和座標軸屬性
  • -Gred 表示爲直方填充紅色
  • -D 會在每個直方的上方標註該直方中的數量。該選項還可以接更多的子選項以控制標註的位置、字體和角度等

水平直方圖

如果想要繪製水平直方圖,只需要增加 -A 選項。需要注意的是,儘管水平直方圖中橫軸是地震數量,縱軸是地震深度,-R 選項中依然是深度在前、統計值在後,即與垂直直方圖時保持一致。

gmt histogram eq.dat -JX15c/9c -R0/40/0/600 -Bxaf+l"Depth" -Byaf+l"Counts" -BWSen -A -D -W1p -Gred -T5 -i2 -png hist3
../../_images/index-gmtplot-21.png

水平直方圖

百分比直方圖

histogram-Z 選項可以進一步控制統計圖的類型。默認縱軸爲統計數目。 -Z1 表示繪製百分比直方圖。

gmt histogram eq.dat -JX15c/9c -Bxaf+l"Depth" -Byaf+l"Counts"+u"%" -BWSen -Z1 -W1p -Gred -T5 -i2 -png hist4
../../_images/index-gmtplot-3.png

添加選項的垂直直方圖

這個命令中,由於縱軸的含義變了,之前的 -R 選項就不再合適了,因而我們去除了 -R 選項讓GMT自動確定最佳數據範圍。