「GMT」利用GMT绘制全球热流值分布

模型基本信息

  1. 初始参数设定
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash
    PS=plot/global_geothermal.ps
    in_gmt=data/Global.gmt
    in_xyz=data/global_heatflow.xyz
    R=-180/180/-90/90
    J=X18d/9d
    gmt psbasemap -R$R -J$J -B30 -X2c -Y2c -BwSEN -K > $PS #设置底图参数
  2. 将数据转为正常的.xyz格式,以便之后绘制散点图(由于数据在大洋区域较为分散,不适合做画平滑热流图,读者可自行尝试)
    1
    gmt convert $in_gmt  -a2=Heat_Flow > $in_xyz 
  3. 绘制全球海岸线
    1
    gmt pscoast -J$J -B30  -R$R -A4 -Gwhite -W0.1p -Dhigh -Swhite -K -O >> $PS
  4. 以散点形式绘制全球热流值
    1
    2
    3
    4
    5
    cat $in_xyz | awk '{if($3<50){print $1,$2}}'| gmt psxy -R$R -J$J -Sc0.07 -G117/0/251   -K -O  >> $PS
    cat $in_xyz | awk '{if($3<100 && $3 >=50){print $1,$2}}'| gmt psxy -R$R -J$J -Sc0.07 -G0/182/255 -K -O >> $PS
    cat $in_xyz | awk '{if($3 >= 100 && $3 < 150){print $1,$2}}'| gmt psxy -R$R -J$J -Sc0.07 -G0/255/58 -K -O >> $PS
    cat $in_xyz | awk '{if($3 >= 150 && $3 < 200){print $1,$2}}'| gmt psxy -R$R -J$J -Sc0.07 -G255/201/0 -K -O >> $PS
    cat $in_xyz | awk '{if($3 >= 200){print $1,$2}}'| gmt psxy -R$R -J$J -Sc0.07 -G255/0/0 -K -O >> $PS
  5. 绘制图例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    gmt pslegend -R$R -J$J  -DjTL+w6i/0.3i+o1c/8c  -O <<EOF >> $PS
    # Legend for $PS
    # G is vertical gap, V is vertical line, N sets # of columns, D draws horizontal line.
    # H is header, L is label, S is symbol, T is paragraph text, M is map scale.
    #
    G 0.02i
    N 5
    S 0.1i c 0.15 117/0/251 0.25p 0.3i 0-50
    S 0.1i c 0.15 0/182/255 0.25p 0.3i 50-100
    S 0.1i c 0.15 0/255/58 0.25p 0.3i 100-150
    S 0.1i c 0.15 255/201/0 0.01p 0.3i 150-200
    S 0.2i c 0.15 255/0/0 0.01p 0.3i >200mW/m2
    G 0.02i
    EOF
  6. 将成图转为png格式,并删除不必要的文件
    1
    2
    gmt psconvert $PS -A -Tg -P
    rm *.history $PS

成图示例

global-geothermal.png