前の画面〕 〔クリックポイント〕 〔最新の一覧〕 〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了

1180 re(1):データを変数として取り出す方法について
2006/1/24(火)09:44 - 竹の - nolm01.iee.niit.ac.jp - 7683 hit(s)

引用する
現在のパスワード


いくつか考えてみました。

1) 私なら、shell script の here document と組み合わせてやると思います。
例えば以下のような感じです (bash script でなくて csh script ですが)。

----- ここから -----
#!/bin/csh -f

set fname = data
set shiftv = `head -1 $fname | awk '{print $2}'`

gnuplot -persist <<EOF
plot '$fname' using 1:(\$2-$shiftv) w l
EOF
----- ここまで -----

これなら、gnuplot では面倒なループ処理等が shell script の機能や
shell 変数で可能になります。

2) gnuplot 4.1 の revision によるのですが、2005 07/10 以降の
gnuplot-4.1 なら gnuplot 内部で system() の返り値や `` を利用する、
という手が使えます。help system function が見れないようならこれは
利用できません。

cf. http://takeno.iee.niit.ac.jp/~shige/unix/gnuplot/gpinfo-2005.html#info-20050722

これを使って head -1 data | awk '{print $2}' の出力をもらう、とい
ったことをすればいいのですが、しかしその場合ファイル名を得ないとい
けないので、複数のデータファイルに共通の gnuplot スクリプトを作ろ
うとするときには少し困ります。

そのデータファイル名を gnuplot に渡そうとすると、あるいは複数のフ
ァイルに共通の処理をしようとすると結局 shell script などを利用する
ことになると思いますから、1) に戻る、といった感じになりますかね。
私は今ならそんな風にします。

3) 昔なら、そのスクリプトにかけるデータファイルの一覧と awk を使っ
てそのデータファイル分の gnuplot スクリプト全体 (例えば以下のよう
なもの) を作ってからそれを gnuplot にかけてたかも。

----- ここから -----
set term post eps
shiftv = `head -1 data1 | awk '{print $2}'`
set out 'file1.eps'
plot 'data1' using 1:($2-shiftv) w l
set out

shiftv = `head -1 data2 | awk '{print $2}'`
set out 'file2.eps'
plot 'data2' using 1:($2-shiftv) w l
set out

....
----- ここまで -----

`` が使えない gnuplot なら、上を生成するときに awk 内部で直接
データから shift 値を読み込んで

shiftv = 20

とかしてやることも可能です。

4) または template の gnuplot スクリプトを用意しておいて (以下
のようなもの)、

----- ここから -----
set term post eps
shiftv = `head -1 @DATA@ | awk '{print $2}'`
set out "@OUTF@"
plot '@DATA@' using 1:($2-shiftv) w l
set out
----- ここまで -----

それを各データファイル毎に sed などで

sed -e "s/@DATA@/data1/g" -e "s/@OUTF@/file1.eps/g" template > tmp.gp

のように変換してから使うとか (もちろん shell script 内で)。


他の方からも他の解が得られると思います。


〔ツリー構成〕

【1178】 データを変数として取り出す方法について 2006/1/23(月)23:45 振一郎 (508)
┣【1179】 re(1):データを変数として取り出す方法について 2006/1/24(火)09:31 松岡 (173)
┣【1180】 re(1):データを変数として取り出す方法について 2006/1/24(火)09:44 竹の (2287)
┣【1181】 re(2):データを変数として取り出す方法について 2006/1/24(火)11:48 松岡 (185)
┣【1183】 re(3):データを変数として取り出す方法について 2006/1/24(火)17:02 竹の (260)
┣【1184】 re(4):データを変数として取り出す方法について 2006/1/24(火)21:34 松岡 (229)
┣【1182】 re(2):データを変数として取り出す方法について 2006/1/24(火)15:07 松岡 (306)
┣【3528】 re(1):データを変数として取り出す方法について 2022/12/30(金)16:03 zoushiki (124)
┣【3529】 re(2):データを変数として取り出す方法について 2022/12/30(金)23:18 竹の (342)
┣【3530】 re(3):データを変数として取り出す方法について 2023/1/22(日)13:17 zoushiki (208)
┣【3536】 re(4):データを変数として取り出す方法について 2023/2/11(土)15:10 竹の (598)

前の画面〕 〔クリックポイント〕 〔最新の一覧〕 〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了

※ 『クリックポイント』とは一覧上から読み始めた地点を指し、ツリー上の記事を巡回しても、その位置に戻ることができます.