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 _* |
ファイル名 | 概要 |
---|---|
bat_fsr.txt | 作図用バッチファイル |
inp_legend_fsr_EW.txt | 凡例作成用入力ファイル |
awk_ssmv0.txt | ピーク周波数検索・出力のためのawkスクリプト(font 12 使用) |
awk_ssmv1.txt | ピーク周波数検索・出力のためのawkスクリプト(font 34 使用) |
legend.txt | awk_klegendで作成した凡例描画用バッチファイル |
fig_fsr_EW.png | 出力画像 |