web-dev-qa-db-ja.com

シェルスクリプトを使用してgnuplotでコマンドを実行する方法は?

私がやりたいのは、最初にプログラムを起動し、それから一連のコマンドを実行して終了するように指示するスクリプトを書くことです。例を見てみましょう。

このスクリプトmyscript.shを作成しましたが、期待どおりに動作しません。 gnuplotを実行して終了するのを待ってから、他のコマンドを実行します。明らかにエラーが発生します。

#!/bin/bash
gnuplot
plot sin(x)
pause -1
quit

私がやろうとしていることは明らかだと思います。そうでない場合は、コメントでお知らせください。

10
Mihir Gadgil

man gnuplotまたは そのオンラインマンページ から:

   -p,  --persist  lets  plot  windows  survive after main gnuplot program
   exits.

   -e "command list" executes the requested commands  before  loading  the
   next input file.

したがって、おそらく実行したいのは次のコマンドです。

gnuplot -e "plot sin(x); pause -1"

私が提案したが、それほど有用ではない他のバリアントは次のとおりです。

gnuplot -p -e "plot sin(x); pause -1"
gnuplot -e "plot sin(x)"
gnuplot -p -e "plot sin(x)"
11
Byte Commander

1つの方法は-persistを使用することです:

#!/usr/bin/gnuplot -persist
set title "Walt pedometer" font ",14" textcolor rgbcolor "royalblue"
set timefmt "%y/%m/%d"
set xdata time
set pointsize 1
set terminal wxt  enhanced title "Walt's steps " persist raise
plot "/home/walt/var/Pedometer" using 1:2 with linespoints

別の方法として、データを前処理する必要がある場合は、Bash Here Documentを使用します(man bashを参照):

#!/bin/bash
minval=0    # the result of some (omitted) calculation
maxval=4219   # ditto
gnuplot -persist <<-EOFMarker
    set title "Walt pedometer" font ",14" textcolor rgbcolor "royalblue"
    set timefmt "%y/%m/%d"
    set yrange $minval:$maxval
    set xdata time
    set pointsize 1
    set terminal wxt  enhanced title "Walt's steps " persist raise
    plot "/home/walt/var/Pedometer" using 1:2 with linespoints
EOFMarker
# rest of script, after gnuplot exits
14
waltinator

manページ で説明されているように、gnuplotは、batchセッションと呼ばれるコマンドファイルからの入力を期待します。できます行plot sin(x)をファイルmyplotに書き込んでからgnuplot myplotを実行します。

スクリプトのようにコマンドファイルを省略すると、インタラクティブセッションが取得されます。

3
Jos

これは役立つかもしれません

{#set terminal postfile             
{#set output  "d1_plot.ps"        
set title "Energy vs. Time for Sample Data"    
set xlabel "Time"    
set ylabel "Energy"    
plot "d1.dat" with lines   
pause -1 "Hit Enter to continue"

詳細はここをクリック

0
lala khan

前述のhere-docメソッドは、Gnuplotおよび他の多くのプログラムでも非常に便利です。 here-docのGnuplotコマンド内でシェル変数を使用すると、シェルスクリプトのコマンドラインからの入力でプロットをパラメーター化できます。気をつけて設定することで、膨大な「ビッグデータ」からプロットを大量に作成できます。正確にこの方法を使用して、数百回の構造ダイナミクスの有限解析を実行して、プロットごとに20,000〜80,000ポイントの一貫した散布図を作成していました。これは非常に強力な方法です。

0
Charles