はじめてのGMT6(グラフ編) その2

はじめてのGMT6(グラフ編)
はじめてGMT6を触る方に向けて、グラフの描き方の基礎を掲載しています。

そういえば、昔のブログ時代には初心者向けにクリスマスツリーを描くスクリプトを紹介していました。
今回はその復刻版です。

クリスマスツリーを描く

今回は季節外れのクリスマスツリーを描いてみます。

これを描くためには、

  1. グラフの枠を描く
  2. 葉の輪郭を描き緑色に塗りつぶす
  3. 幹の輪郭を描き茶色に塗りつぶす
  4. 星とリースを付ける

の4ステップです。順番にのんびりやっていきましょう。

グラフの枠を描く

gmt basemapの使い方
GMTのbasemapモジュールについて説明しています。

何か図を描く際は原則gmt basemapから書き始めましょう。儀式です。

今回は15cm*15cmの図を作成します。範囲はX軸・Y軸ともに0~100とすればいいでしょう。グラフの場合は-JXとします。

#!/bin/bash
gmt begin christmas png
    gmt basemap -JX15 -R0/100/0/100 -Bafg -BWSNE+t"Christmas_Tree"
gmt end


  • gmt basemap -JX15 -R0/100/0/100 -Bafg -BWSne+t"Christmas_Tree"
    • グラフの枠を描きます!
    • -JX15 : 図の大きさは15cm平方です。 ←-JX15/15でも可だが、平方の図を書く際は省略可能。
    • -R0/100/0/100 : X軸は0から100まで、Y軸は0から100まで値を取ってください!
    • -Bafg : X軸もY軸も目盛間隔はGMTにお任せします。 ←-Bxafg -Byafgでも-Bxyafgでも可。
    • -BWSne+t"Christmas_Tree" : 目盛りと軸ラベルは下(南)左(西)に書いてください。「Christmas_Tree」というタイトルも付けてください!

葉の輪郭を描き緑色に塗りつぶす

gmt plot の使い方
GMTのplotモジュールについて説明しています。

葉っぱ部分の輪郭を描いてみよう。何か線や記号を描く際はgmt plotを使います。
先ほどのスクリプトを以下のように書き変えてみます。

#!/bin/bash
gmt begin christmas_tree png
    gmt basemap -JX15 -R0/100/0/100 -Bagf -BWSne+t"Christmas_Tree"
    gmt plot -L -W1,black  << END
50 90
30 70
35 70
10 40
90 40
65 70
70 70
END
gmt end


  • gmt plot -L -W1,black << END
    • 直線や記号を描きます!
    • -L : 「最初の座標」と「最後の座標」を結んで閉じた多角形にしてください。
    • -W1,black : 線の太さは1ポイントで描いてください!
    • << END : 線を引いてほしい座標は次の行からENDが現れるところまでです!

これを緑色に塗りつぶすには、gmt plot-Gを書き加えます。

#!/bin/bash
gmt begin christmas_tree png
    gmt basemap -JX15 -R0/100/0/100 -Bagf -BWSne+t"Christmas_Tree"
    gmt plot -L -W1,black -Ggreen  << END
50 90
30 70
35 70
10 40
90 40
65 70
70 70
END
gmt end


  • gmt plot -L -W1,black -Ggreen << END
    • 直線や記号を描きます!
    • -L : 「最初の座標」と「最後の座標」を結んで閉じた多角形にしてください。
    • -W1,black : 線の太さは1ポイント。黒で描いてください!
    • -Ggreen : 閉じた多角形の中をgreenで塗りつぶしてください!
    • << END : 線を引いてほしい座標は次の行からENDが現れるところまでです!

幹の輪郭を描き茶色に塗りつぶす

これは葉を描いたときと同じ要領です。

#!/bin/bash
gmt begin christmas_tree png
    gmt basemap -JX15 -R0/100/0/100 -Bagf -BWSne+t"Christmas_Tree"
    gmt plot -L -W1,black -Ggreen << END
50 90
30 70
35 70
10 40
90 40
65 70
70 70
50 90
END
    gmt plot -L -W1,Black -Gbrown << END
40 40
40 20
60 20
60 40
END
gmt end


  • gmt plot -L -W1,black -Ggreen << END

    • 直線や記号を描きます!
    • -L : 「最初の座標」と「最後の座標」を結んで閉じた多角形にしてください。
    • -W1,black : 線の太さは1ポイント。黒で描いてください!
    • -Ggreen : 閉じた多角形の中をgreenで塗りつぶしてください!
    • << END : 線を引いてほしい座標は次の行からENDが現れるところまでです!
  • gmt plot -L -W1,Black -Gbrown << END

    • 直線や記号を描きます!
    • -L : 「最初の座標」と「最後の座標」を結んで閉じた多角形にしてください。
    • -W1,black : 線の太さは1ポイント。黒で描いてください!
    • -Gbrown : 閉じた多角形の中をbrownで塗りつぶしてください!
    • << END: 線を引いてほしい座標は次の行からENDが現れるところまでです!

ここで、

  • 座標を指定する方法は標準入力を用いても問題ない。すなわち、
    echo -e "40 40\n40 20\n60 20\n60 40" | gmt plot -W1,black -Gbrown
    でも動く。

  • 座標は外部ファイルからでも読み込む。
    たとえば、tree.csvとかのファイルに座標データが格納されている場合は、
    gmt plot tree.csv -W1,black -Gbrown
    でOK。座標は「X,Y」の順番にすること。

ことを覚えておきましょう。

星とリースを付ける

クリスマスツリーなので星を飾ろう。
上のスクリプトを以下のように書き足す。

#!/bin/bash
gmt begin christmas_tree png
    gmt basemap -JX15 -R0/100/0/100 -Bagf -BWSne+t"Christmas_Tree"
    gmt plot -L -W1,black -Ggreen << END
50 90
30 70
35 70
10 40
90 40
65 70
70 70
50 90
END
    gmt plot -L -W1,Black -Gbrown << END
40 40
40 20
60 20
60 40
END
    gmt plot -Sa2.0 -W1,black -Gyellow << END
50 90
END
gmt end

それっぽくなってきましたね!

記号を描くときもgmt plotを用います。


  • gmt plot -Sa2.0 -W1,black -Gyellow << END
    • 直線や記号を描きます!
    • -Sa2.0 : 直径2.0cmを描いてください!
    • -W1,black : 線の太さは1ポイントで、黒色にしてください!
    • -Gyellow 星の中身をyellowで塗りつぶしてください!
    • << END : 星を描く座標は次の行からENDが現れるところまでです!

というわけで最後にリースを付けます。円形は-Scで描けます。

#!/bin/bash
gmt begin christmas_tree png
    gmt basemap -JX15 -R0/100/0/100 -Bagf -BWSne+t"Christmas_Tree"
    gmt plot -L -W1,black -Ggreen << END
50 90
30 70
35 70
10 40
90 40
65 70
70 70
50 90
END
    gmt plot -L -W1,Black -Gbrown << END
40 40
40 20
60 20
60 40
END
    gmt plot -Sa2.0 -W1,black -Gyellow << END
50 90
END
    gmt plot -Sc1.0 -W0.05,black -Gred << END
40 65
END
    gmt plot -Sc1.0 -W0.05,black -Gblue << END
60 50
END
gmt end

完成です!


  • gmt plot -Sc1.0 -W0.05,black -Gred << END

    • 直線や記号を描きます!
    • -Sa2.0 : 直径1.0cmの円を描いてください!
    • -W1,black : 線の太さは1ポイントで、黒色にしてください!
    • -Gred 円の中身をredで塗りつぶしてください!
    • << END : 円を描く座標は次の行からENDが現れるところまでです!
  • gmt plot -Sc1.0 -W0.05,black -Gblue << END

    • 直線や記号を描きます!
    • -Sa2.0 : 直径1.0cmの円を描いてください!
    • -W1,black : 線の太さは1ポイントで、黒色にしてください!
    • -Gblue 円の中身をblueで塗りつぶしてください!
    • << END : 円を描く座標は次の行からENDが現れるところまでです!

どうでしょうか?ちゃんと付いてこられましたか?
gmt basemapgmt plot もGMTの基礎的なコマンドです。必ず覚えるようにしましょう!

コメント

タイトルとURLをコピーしました