[更新情報]

▽Go to footer

左縦軸に月平均気温,右縦軸に月降水量をとった気候グラフの作成事例です. 2つの縦軸を用いる場合,色々工夫しないと思ったようにいかず,少し苦労しました.

epsから回転させてpngに変換するコマンドは以下のものを使用しました.

mogrify -rotate 90 -trim -density 300 -bordercolor "#ffffff" -border 50x50 -format png *.eps

実行用バッチファイルと解説

rem ============================================
rem Comparison of Climate
rem ============================================
rem ***************************************************************************
rem * A4横用紙に4地点の月平均気温と月間降水量のグラフを作成
rem * 気温は左縦軸を用いた折れ線グラフとする
rem * 降水量は右縦軸を用いた棒グラフとする
rem * 横軸は月とし,作図範囲は0〜12とし,0.5,1.5,・・・11.5
rem * に12か月分のデータをプロットする.
rem * 横軸ラベルは別途,pstextで月名を書き込む
rem ***************************************************************************
set fig_out=fig_climate.eps
gmtset ANOT_FONT_SIZE_PRIMARY 14
gmtset ANOT_OFFSET_PRIMARY 0.2c
gmtset LABEL_FONT_SIZE 14
gmtset HEADER_FONT_SIZE 16
gmtset HEADER_OFFSET 0.3c
gmtset TICK_LENGTH 0c
gmtset TICK_PEN 0.5p
rem ============================================
rem GMT Plotting
rem ============================================
psbasemap -R0/12/0/400 -JX9/6 -Bf1g1/a100g100:"Rainfall (mm)":En -X2.5 -Y2 -K > %fig_out%
gawk "BEGIN{FS=\",\"}{if(3<=NR)print NR-2.5,$7}" dat_inp_climate.csv | psxy -R -J -Sb1u -W1 -G0/255/255 -B -K -O >> %fig_out%
psbasemap -R0/12/-10/30 -J -Bf1/a10:"Temperature (@%%12%%\260@%%%%C)":Ws:."Naha": -K -O >> %fig_out%
gawk "BEGIN{FS=\",\"}{if(3<=NR)print NR-2.5,$8}" dat_inp_climate.csv | psxy -R -J -W5,red -K -O >> %fig_out%
rem ***************************************************************************
rem * GMTでは重ね書きされるので,水色(aqua)で塗りつぶす棒グラフを先に描画する
rem * 必要がある.
rem * -X2.5 -Y2で原点をx方向に2.5cm,y方向に2cm移動.
rem ***************************************************************************
echo  0.5 -0.01 14 90 0 MR Jan | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  1.5 -0.01 14 90 0 MR Feb | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  2.5 -0.01 14 90 0 MR Mar | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  3.5 -0.01 14 90 0 MR Apr | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  4.5 -0.01 14 90 0 MR May | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  5.5 -0.01 14 90 0 MR Jun | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  6.5 -0.01 14 90 0 MR Jul | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  7.5 -0.01 14 90 0 MR Aug | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  8.5 -0.01 14 90 0 MR Sep | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  9.5 -0.01 14 90 0 MR Oct | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo 10.5 -0.01 14 90 0 MR Nov | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo 11.5 -0.01 14 90 0 MR Dec | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
rem ***************************************************************************
rem * 横軸に月名の短縮表示を90度回転させたテキストとして描画
rem ***************************************************************************



psbasemap -R0/12/0/400 -JX9/6 -Bf1g1/a100g100:"Rainfall (mm)":En -X14 -K -O >> %fig_out%
gawk "BEGIN{FS=\",\"}{if(3<=NR)print NR-2.5,$5}" dat_inp_climate.csv | psxy -R -J -Sb1u -W1 -G0/255/255 -B -K -O >> %fig_out%
psbasemap -R0/12/-10/30 -J -Bf1/a10:"Temperature (@%%12%%\260@%%%%C)":Ws:."Tokyo": -K -O >> %fig_out%
gawk "BEGIN{FS=\",\"}{if(3<=NR)print NR-2.5,$6}" dat_inp_climate.csv | psxy -R -J -W5,red -K -O >> %fig_out%
rem ***************************************************************************
rem * -X14で原点をx方向に14cm移動.
rem * これにより1つ目のグラフの右に2つ目のグラフを描画.
rem ***************************************************************************
echo  0.5 -0.01 14 90 0 MR Jan | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  1.5 -0.01 14 90 0 MR Feb | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  2.5 -0.01 14 90 0 MR Mar | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  3.5 -0.01 14 90 0 MR Apr | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  4.5 -0.01 14 90 0 MR May | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  5.5 -0.01 14 90 0 MR Jun | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  6.5 -0.01 14 90 0 MR Jul | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  7.5 -0.01 14 90 0 MR Aug | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  8.5 -0.01 14 90 0 MR Sep | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  9.5 -0.01 14 90 0 MR Oct | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo 10.5 -0.01 14 90 0 MR Nov | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo 11.5 -0.01 14 90 0 MR Dec | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%



psbasemap -R0/12/0/400 -JX9/6 -Bf1g1/a100g100:"Rainfall (mm)":En -X-14 -Y9 -K -O >> %fig_out%
gawk "BEGIN{FS=\",\"}{if(3<=NR)print NR-2.5,$3}" dat_inp_climate.csv | psxy -R -J -Sb1u -W1 -G0/255/255 -B -K -O >> %fig_out%
psbasemap -R0/12/-10/30 -J -Bf1/a10:"Temperature (@%%12%%\260@%%%%C)":Ws:."Akita": -K -O >> %fig_out%
gawk "BEGIN{FS=\",\"}{if(3<=NR)print NR-2.5,$4}" dat_inp_climate.csv | psxy -R -J -W5,red -K -O >> %fig_out%
rem ***************************************************************************
rem * -X-14 -Y9で原点をx方向に-14cm,y方向に9cm移動.
rem * これにより2つ目のグラフの左上に3つ目のグラフを描画.
rem ***************************************************************************
echo  0.5 -0.01 14 90 0 MR Jan | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  1.5 -0.01 14 90 0 MR Feb | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  2.5 -0.01 14 90 0 MR Mar | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  3.5 -0.01 14 90 0 MR Apr | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  4.5 -0.01 14 90 0 MR May | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  5.5 -0.01 14 90 0 MR Jun | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  6.5 -0.01 14 90 0 MR Jul | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  7.5 -0.01 14 90 0 MR Aug | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  8.5 -0.01 14 90 0 MR Sep | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  9.5 -0.01 14 90 0 MR Oct | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo 10.5 -0.01 14 90 0 MR Nov | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo 11.5 -0.01 14 90 0 MR Dec | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%



psbasemap -R0/12/0/400 -JX9/6 -Bf1g1/a100g100:"Rainfall (mm)":En -X14 -K -O >> %fig_out%
gawk "BEGIN{FS=\",\"}{if(3<=NR)print NR-2.5,$1}" dat_inp_climate.csv | psxy -R -J -Sb1u -W1 -G0/255/255 -B -K -O >> %fig_out%
psbasemap -R0/12/-10/30 -J -Bf1/a10:"Temperature (@%%12%%\260@%%%%C)":Ws:."Asahikawa": -K -O >> %fig_out%
gawk "BEGIN{FS=\",\"}{if(3<=NR)print NR-2.5,$2}" dat_inp_climate.csv | psxy -R -J -W5,red -K -O >> %fig_out%
rem ***************************************************************************
rem * -X14で原点をx方向に14cm移動.
rem * これにより3つ目のグラフの右に4つ目のグラフを描画.
rem ***************************************************************************
echo  0.5 -0.01 14 90 0 MR Jan | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  1.5 -0.01 14 90 0 MR Feb | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  2.5 -0.01 14 90 0 MR Mar | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  3.5 -0.01 14 90 0 MR Apr | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  4.5 -0.01 14 90 0 MR May | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  5.5 -0.01 14 90 0 MR Jun | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  6.5 -0.01 14 90 0 MR Jul | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  7.5 -0.01 14 90 0 MR Aug | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  8.5 -0.01 14 90 0 MR Sep | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo  9.5 -0.01 14 90 0 MR Oct | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo 10.5 -0.01 14 90 0 MR Nov | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%
echo 11.5 -0.01 14 90 0 MR Dec | pstext -R0/12/0/1 -J -N -K -O>> %fig_out%



echo  0 0 16 0 0 MC Comparison of Climate | pstext -R0/10/-2/1 -JX20/2 -X-2.5 -Y7 -N -K -O>> %fig_out%
echo  0 -1 14 0 0 MC (Temperature : Red line,  Rainfall : Aqua bar) | pstext -R -J -N -O>> %fig_out%
rem ***************************************************************************
rem * 4つ目のグラフの原点より-X-2.5 -Y7で原点をx方向に-2.5cm,y方向に7cm移動.
rem * これによりA4横用紙のほぼ中央上にテキストを表示する.
rem ***************************************************************************


set fig_out=
del _*
del .gmt*

バッチファイルのダウンロードと画像確認

ファイル名概要
作図用バッチファイル(拡張子batをtxtに変更)
入力データファイル(拡張子csvをtxtに変更)
出力画像(ImageMagickでepsをpngに変換)

inserted by FC2 system