[更新情報]

▽Go to footer

GMT で地震動のフーリエスペクトル比(地表/地中)をグラフ化した事例です.

図中にはピークを示す周波数を記載しました.これはawkスクリプトによりスペクトル比が極大となる周波数を求めたものを書き込んでいます.awkスクリプト中ではスペクトル比の大きい順の並び替えも行っていますが,平滑化バンド幅を大きめ(1Hz)にとっておりピーク数が少ないので特段活躍はしていません.また,グラフ化の練習のため,ピーク周波数を示すテキストに,Symbol (font No.12) と ZapfDingbats (font No.34) の矢印を入れてみました.

準備

入力データ書式は以下のとおりです.

1〜5行目はファイル情報,6行目は列の項目情報です.

# in1=,dat_acc_TCGH16_EW2.csv
# in2=,dat_acc_TCGH16_EW1.csv
# out=,dat_fsr_TCGH16_EW.csv
# band=,1
# ndata=,16385
# frq,fs01,fs02,fsp1,fsp2,fsr
0,0.00944542,3.00241e-005,90.2255,68.6429,1.31442
0.00305176,159.513,1.90271,90.2294,68.6447,1.31444
0.00610352,77.7709,3.01615,90.2412,68.65,1.31451
・・・・・

7行目以降,1列目は振動数,2列目・3列目は原データのスペクトル,4列目・5列目は平滑化処理後のスペクトル,6列目はスペクトル比です.

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

rem ============================================
rem Fourier spectrum ratio (normal-log chart)
rem ============================================
rem Data file format (CSV data)
rem freq : Frequency
rem fs01 : Original spectrum of numerator
rem fs02 : Original spectrum of denominator
rem fsp1 : Smoothing spectrum of numerator
rem fsp2 : Smoothing spectrum of denominator
rem fsr  : Spectrum ratio (fsp1/fsp2)

rem ============================================
rem Drawing by GMT (response spectrum)
rem ============================================
set range=0/20/0.1/1000
set scale=12/10l
set xga=g5a5
set yga=g1a1
set xlabel="Frequency (Hz)"
set ylabel="Fourier spectrum (gal*sec), Spectrum ratio"
rem **************************************************************************
rem * set range=0/20/0.1/1000 作図範囲をx軸0〜20,y軸0.1〜1000に設定
rem * set scale=12/10l        x軸長さを12cm普通軸,y軸長さを10cm対数軸に設定
rem * set xga=g5a5            x軸目盛設定
rem * set yga=g1a1            y軸目盛設定
rem * set xlabel="Frequency (Hz)"
rem * set ylabel="Fourier spectrum (gal*sec), Spectrum ratio"
rem *         xlabel,ylabel   x軸ラベル・y軸ラベル設定
rem **************************************************************************
gmtset ANOT_FONT_SIZE 12
gmtset LABEL_FONT_SIZE 12
gmtset TICK_LENGTH 0c
rem -------------------------------
rem Setting of files (EW)
rem -------------------------------
set inpl=inp_legend_fsr_EW.txt
set inp_1=dat_fsr_TCGH16_EW.csv
set fig_out=fig_fsr_EW.eps
rem **************************************************************************
rem * set inpl=inp_legend_fsr_EW.txt  凡例作成用入力データファイル
rem * set inp_1=dat_fsr_TCGH16_EW.csv プロット用入力データファイル
rem * set fig_out=fig_fsr_EW.eps      画像出力ファイル
rem **************************************************************************
rem -------------------------------
rem Plotting
rem -------------------------------
gawk -f awk_klegend.awk %inpl% > legend.bat
psbasemap -R%range% -JX%scale% -B%xga%:%xlabel%:/%yga%:%ylabel%:WSen -P -X5 -Y6 -K > %fig_out%
gawk "BEGIN{FS=\",\"}{if(7<=NR)print $1,$6}" %inp_1% | psxy -R -J -B -W5               -P -O -K >> %fig_out%
gawk "BEGIN{FS=\",\"}{if(7<=NR)print $1,$4}" %inp_1% | psxy -R -J -B -W5t30_10_10_10:0 -P -O -K >> %fig_out%
gawk "BEGIN{FS=\",\"}{if(7<=NR)print $1,$5}" %inp_1% | psxy -R -J -B -W5t10_10:0       -P -O -K >> %fig_out%
rem **************************************************************************
rem * gawk -f awk_klegend.awk %inpl% > legend.bat
rem *     凡例描画用gawkスクリプト実行
rem * psbasemap
rem *     -X5 -Y6 原点をx方向5cm,y方向6cm移動
rem * gawk "BEGIN{FS=\",\"}{if(7<=NR)print $1,$6}" %inp_1%
rem *     gawkスクリプトでinp_1の7行目以降1列目と6列目をpsxyに送り込む
rem * psxy
rem *     -W5               太さ5pt実線
rem *     -W5t30_10_10_10:0 太さ5pt一点鎖線
rem *     -W5t10_10:0       太さ5pt点線
rem **************************************************************************
rem -------------------------------
rem Drawing of Peak frequency (no -N option)
rem -------------------------------
gawk -f awk_ssmv0.awk %inp_1% > _temp.txt
pstext _temp.txt -R -J -P -O -K >> %fig_out%
rem **************************************************************************
rem * gawk -f awk_ssmv0.awk %inp_1% > _temp.txt
rem *     gawkスクリプト(awk_ssmv1.awk)でピークを検索しpstextで描画する
rem *     データとしてファイル_temp.txtに書き込む
rem *     ここでは上からの矢印とピーク値を記載.
rem *     フォントはSymbol(No.12),キャラクラー334番を使用
rem * pstext _temp.txt -R -J -P -O -K >> %fig_out%  ピーク値書き出し
rem **************************************************************************
gawk -f awk_ssmv1.awk %inp_1% > _temp.txt
pstext _temp.txt -R -J -P -O -K >> %fig_out%
rem **************************************************************************
rem * gawk -f awk_ssmv1.awk %inp_1% > _temp.txt
rem *     gawkスクリプト(awk_ssmv1.awk)でピークを検索しpstextで描画する
rem *     データとしてファイル_temp.txtに書き込む
rem *     ここでは下からの矢印とピーク値を記載.
rem *     フォントはZapfDingbats(No.34),キャラクター342番を使用
rem * pstext _temp.txt -R -J -P -O -K >> %fig_out%  ピーク値書き出し
rem **************************************************************************
rem *** marginal note ***
echo 0 1.02 10 0 0 BL Band=1.0Hz | pstext -R0/1/0/1 -JX12/10 -N -P -O -K >> %fig_out%
rem **************************************************************************
rem * 枠外に情報「Band=1.0Hz」を記載
rem * -R0/1/0/1 作図範囲再設定
rem * -JX12/10  グラフの寸法を普通軸として再設定
rem **************************************************************************
rem -------------------------------
rem Drawing of legend
rem -------------------------------
call legend.bat
rem **************************************************************************
rem * 凡例描画用バッチファイル実行
rem **************************************************************************



set range=
set scale=
set xga=
set yga=
set xlabel=
set ylabel=
set inpl=
set inp_1=
set fig_out=
 
del .gmt*
del _*

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

ファイル名概要
作図用バッチファイル
凡例作成用入力ファイル
ピーク周波数検索・出力のためのawkスクリプト(font 12 使用)
ピーク周波数検索・出力のためのawkスクリプト(font 34 使用)
awk_klegendで作成した凡例描画用バッチファイル
出力画像



inserted by FC2 system