2

gnuplot で設定した間隔で一連の垂直線をプロットしたいと思います。

プロットに関するいくつかの情報。

プロットは、主に .dat ファイルからのデータです。gnuplot スクリプトは、sed を使用して gnu プロット スクリプトを変更する bash スクリプトによって呼び出されます。これは、古い bash スクリプトの抜粋です (見苦しいと思います)。

sed -i 's/C = CONCEHOLD/C = '${$CO}'/g' $GNUPLOTROOT/plotviscosity.plt
gnuplot $GNUPLOTROOT/plotviscosity.plt
mv my-plot.ps $VISCPLOTNAME
sed -i 's/C = '${$CO}'/C = CONCEHOLD/g' $GNUPLOTROOT/plotviscosity.plt

とともに 。plt ファイルは次のようになります。

set title "Viscosity vs Time, C = CONCEHOLD, beta = RATHOLD, zeta = ZETAHOLD"
set xlabel "Time"
set ylabel "Viscosity"
plot "viscout.dat" using 3:2 title 'Viscosity'
# Saving to my-plot.ps
load save.plt
#

このプロットに、設定された繰り返し間隔で一連の垂直線を追加したいと思います。http://t16web.lanl.gov/Kawano/gnuplot/parametric-e.htmlで垂直線をプロットする方法を見つけました

set parametric
const=3
set trange [1:4]
set xrange [0:5]
set yrange [0:5]
plot const,t

私はを頂きたい

const=repititionperiod*i

ここで、i は (1,calculateduppedlimit] に属する整数です。

sed を介して repititionperiod を再度入力することもできますが、同様の無駄なcalculateduppedlimitで入力できますが、gnuplot内またはbashスクリプトのforループ内で既に作成されたプロットに垂直線を追加する別のgnuplotスクリプト内の何らかのforループが必要です。

gnu プロット内のループに関する情報や、以前に作成したプロットへの追加に関する情報が見つかりません。

どんなアドバイスもありがたく受け取った。

4

1 に答える 1

3

編集: Gnuplot は実際に for ループをサポートするようになりました。ここでそれについて読むことができます

私が理解しているように、gnuplot には for ループがありませんが、次のような種類のいずれかを生成できます。

を含むファイル「loop.gp」を作成します。

const  = const + 1
#... some gnuplot commands ... 
if(const<100) reread

次に、gnuplot ターミナル、またはスクリプトの書き込みで、

const = 3; load "loop.gp";

これにより、単純なループが得られます。

(この例はhttp://t16web.lanl.gov/Kawano/gnuplot/index-e.htmlのその他のセクションから取られています)

特定の回答については、パラメトリック ラインではなく矢印を追加してみてください。

set arrow from const,1 to const,4 nohead

ほとんど同じことをします。

この場合、あなたは loop.gp である可能性があります

const  = const + repititionperiod
#... some gnuplot commands ...  
set arrow from const,1 to const,4 nohead
if(const<calculatedupperlimit) reread

そして、あなたはループを実行します

const = 1; repititionperiod=2;calculatedupperlimit = 10; load "loop.gp"; replot;

replot は矢印をプロットします。

線のみが必要な場合は、グラフをフィードして実際にプロットする必要があります (一連の矢印はカウントされません)。あなたが与えた例は、最初の垂直線をプロットするために使用できます。

お役に立てれば。

トム

于 2010-11-06T21:00:28.957 に答える