web-dev-qa-db-ja.com

bashスクリプトからgnuplotスクリプトにファイルを渡す

私はgnuplotの初心者であり、引数をたくさん渡すのに苦労していますが、今ではこの単純なbashスクリプトとgnuplotスクリプトがあります。

bashスクリプトでplot.shファイルを変更してから、プロットするgnuplotスクリプトに送信する必要がありますORファイルを変更し、パラメーター(別のスクリプト$ 1から渡された数値)をプロットするファイルを識別するgnuplotスクリプト、問題は2つの方法のどちらでも機能していない、私はそれを正しくしていないようです!何か助け?

ここに私のbashスクリプトplot.shがあります

#!/bin/bash

sed -i 's/ns/;/g' /dev/shm/waitingTime$1.txt
gnuplot -e "filename='/dev/shm/waitingTime$1'" file.gnuplot

そして、これがfile.gnuplotというgnuplotスクリプトです。

#!/home/yas/file.gnuplot

set xlabel "start"    
set ylabel "Delay"
set autoscale
set style line 1 lt 1 lw 3 pt 3 linecolor rgb "red"
plot<"filename"> using 1:2 w points title "tests"
set terminal postscript portrait enhanced mono dashed lw 1 'Helvetica' 14
set output '/dev/shm/TT.pdf'
pause -1

file.gnuplotの終わり

5
yasmink

正しく理解できれば、グラフをディスプレイに表示して、then PDFファイル/dev/shm/TT.pdfにコピーを作成します。

ここに2つの問題があります。

  1. プロットの指示---あなたはfilenameにファイル名を保存するので、ypuはただ言うべきです

    plot filename  using 1:2 w points title "tests"
    

    <"...なし。

  2. Pdfファイルが必要な場合は、ターミナルと出力ファイルの変更後にreplotを追加する必要があります(宛先ディレクトリに書き込むことができるダブルチェック)。

ファイルdata.datとファイルfile.gnuplotを作成しました:

set xlabel "start"    
set ylabel "Delay"
set autoscale
set style line 1 lt 1 lw 3 pt 3 linecolor rgb "red"
plot filename   using 1:2 w points title "tests"
set terminal postscript portrait enhanced mono dashed lw 1 'Helvetica' 14
set output 'TT.pdf'
replot
pause -1

そしてそれを呼び出す:

gnuplot -e "filename='data.dat'" file.gnuplot 

出力があります:

enter image description here

...および対応するTT.pdfファイル。

ちなみに、最後のpauseの代わりに、追加する方がずっと良い

set terminal wxt persist 

開始時に、一時停止を削除します。スクリプトは自然に終了し、グラフのあるウィンドウは、閉じるまで表示されたままになります。

2
Rmano