GMT中文效果演示

中文文字

本例中展示瞭如何在繪圖時使用中文標籤和中文標題,以及如何打印橫排和豎排的中文。

  • 左圖中Y軸標籤與縱軸平行
  • 中圖中Y軸標籤與X軸平行
  • 右圖中Y軸標籤單獨繪製並使用了豎排中文字體。
gmt begin chinese-texts png
# 左图
gmt set FONT_TITLE 24p,41,black FONT_LABEL 16p,39,black
gmt basemap -R0/10/0/5 -JX6c/4c -Bxaf+l"横轴" -Byaf+l"纵轴" -BWSen+t"中文标题"
gmt text -F+f << EOF
3 2.5 20p,39,black 横排文字
8 4.0 20p,43,red   竖排文字
EOF

# 中图
gmt set FONT_TITLE 24p,41,black FONT_LABEL 16p,39,black
gmt basemap -R0/10/0/5 -JX6c/4c -Bxaf+l"横轴" -Byaf+L"纵轴" -BWSen+t"中文标题" -X9c
gmt text -F+f << EOF
3 2.5 20p,39,black 横排文字
8 4.0 20p,43,red   竖排文字
EOF

# 右图
gmt set FONT_TITLE 24p,41,black FONT_LABEL 16p,39,black
gmt basemap -R0/10/0/5 -JX6c/4c -Bxaf+l"横轴" -BWSen+t"中文标题" -X9c
gmt basemap -Byaf+L"纵轴" -BW --FONT_LABEL=16p,43,black --MAP_LABEL_OFFSET=20p
gmt text -F+f << EOF
3 2.5 20p,39,black 横排文字
8 4.0 20p,43,red   竖排文字
EOF

gmt end
../_images/chinese-texts.png

中文月份

注解

GMT中文語言文件是GMT安裝目錄下的文件 share/localization/gmt_cn1.locale。該中文語言文件默認爲GB2312編碼方式。對於Linux和macOS用戶,需要人工將其修改爲 UTF8 編碼才能正常顯示中文的月份和星期。Windows用戶則不需要對其進行處理。

修改文件編碼方式的方式有很多,請自行查找。我使用的是 enca 的如下命令修改編碼:

enca -L zh_CN -x UTF-8 gmt_cn1.locale

GMT支持中文的月份。要想使用中文表示月份,需要設置 GMT_LANGUAGE 爲中文,即 cn1,並設置標註的字體爲中文。

gmt begin chinese-months png
# 设置GMT语言为中文
gmt set GMT_LANGUAGE cn1
# 设置标注的字体为中文字体
gmt set FONT_ANNOT_PRIMARY 16p,39,black

# FORMAT_TIME_PRIMARY_MAP 为 full 表示显示“一月”
gmt set FORMAT_DATE_MAP o FORMAT_TIME_PRIMARY_MAP full
gmt basemap -R1997T/1998T/0/10 -JX25c/4c -Bpxa1O -Byaf -BWSen

# FORMAT_TIME_PRIMARY_MAP 为 abbreviated 表示显示“一”
gmt set FORMAT_DATE_MAP o FORMAT_TIME_PRIMARY_MAP abbreviated
gmt basemap -R1997T/1998T/0/10 -JX25c/4c -Bpxa1O -Byaf -BWSen -Y-6c
gmt end
../_images/chinese-months.png

中文星期

GMT支持中文的星期。要想使用中文表示星期幾,需要設置 GMT_LANGUAGE 爲中文,即 cn1,並設置標註的字體爲中文。

gmt begin chinese-weeks png
# 设置GMT语言为中文
gmt set GMT_LANGUAGE cn1
# 设置标注的字体为中文字体
gmt set FONT_ANNOT_PRIMARY 12p,39

# FORMAT_TIME_PRIMARY_MAP 为 full 表示显示“星期一”
gmt set FORMAT_DATE_MAP u FORMAT_TIME_PRIMARY_MAP full
gmt basemap -R1969-7-21T/1969-7-28T/0/4 -JX15c/3c -Bpxa1K -Byaf -BWSen

# FORMAT_TIME_PRIMARY_MAP 为 abbreviated 表示显示“周一”
gmt set FORMAT_DATE_MAP u FORMAT_TIME_PRIMARY_MAP abbreviated
gmt basemap -R1969-7-21T/1969-7-28T/0/4 -JX15c/3c -Bpxa1K -Byaf -BWSen -Y-5c
gmt end
../_images/chinese-weeks.png