top of page

【システム】gnuplotでファイル内のデータを変数として取り込んでプロットする

  • 執筆者の写真: Taiju YONEDA
    Taiju YONEDA
  • 2023年8月17日
  • 読了時間: 1分

更新日:2023年10月19日

個人的な備忘録ですが、gnuplotユーザーには有用かもしれないので公開しておきます。

p "***.csv" u ($3):($0==1?F0=($4):0,($4)-F0)

力学測定結果のデータなど、初期状態の数値をゼロとしてプロットしたい。そのために1行目のデータを"F0"などの変数に格納して、その後の各データからF0を引きたいが、データファイルが多いときや、くり返し処理でデータファイルを読み込む場合など、自動でF0を読んで差をとってほしい。


たとえば、CSVデータ(***_1.csv)で次のようになっていた場合。


試験回数,時間[sec],移動量[mm],荷重[N]
1,0.01,0,6.36649131774902
1,0.02,0,6.36649131774902
1,0.03,0,6.36649131774902
1,0.04,0,6.36647343635559
1,0.05,0,6.36643171310425

gnuplotスクリプトには、これまで、

F0_1=6.37
F0_2=7.92
p "***_1.csv" u ($3):(($4)-F0_1)
rep "***_2.csv" u ($3):(($4)-F0_2)

と書いてきたが、"F0_30"とかまでくると、さすがに自動化したくなって、参考URLに従って"$0==1?F0=$4:0,($4)-F0"とした。

おそらく"$0"は何行目かの情報でゼロ始まり。

ちなみに$0=0の行はヘッダーなので、

se datafile commentschars '試'

をどこかに記述して読み飛ばさせる。ただし、読み飛ばしても$0のカウントは増える模様。


usingコマンドのy軸の指定の直前にコンマを付けて条件分岐を入れる。

"$0==1?"

$0が"1"つまり2行目であるのが、

"?F0=($4)"

真ならば、F0の変数にそのときの4列目の数を格納する。

":0"

偽ならば、0。(特になにもしないということだと思う)

これで2行目の4列目のデータをF0として格納できるので、すべての$4とF0の差をとれば、y軸のオフセットゼロができる。


参考URL

https://ayapin-film.sakura.ne.jp/Gnuplot/trees.cgi?tw=&log=&search=&mode=&v=1178&e=msg&lp=1178&st=0

 
 
 

最新記事

すべて表示
【システム】macデスクトップの外付けドライブ一部非表示

macOSで、デスクトップに表示されるリムーバブルディスクを、ディスクごとに表示したりさせなかったりする設定をメモしておきます。 (( 状況 )) macでは何かリムーバブルディスクを接続すれば、デスクトップにショートカットアイコンを表示することができます。(Finderの...

 
 
 

Comments


t-yoneda[at]fc.ritsumei.ac.jp

©2024 みちはた / 米田大樹の研究紹介

bottom of page