20

X 範囲が異なるいくつかのデータをプロットしており、現在の X 範囲のデータの最大値と最小値に従って yrange を変更したいと考えています。GPVAL_Y_MAX と GPVAL_Y_MIN を使用すると、これらの値は範囲内のデータだけでなく、データ全体の最大値と最小値に対応します。

たとえば、次のデータがあります。

1 3
2 5
3 8
4 20
5 30

次のスクリプトを使用します。

plot 'data.txt' u 1:2;
set xrange [1:3];
replot
set xrange [1:5];
replot

最初のプロットでは、yrange を [3:8] に設定したいのですが、2 番目のプロットでは、yrange を [3:30] に設定する必要があります。次のようなものを使用すると

set yrange [GPVAL_Y_MIN:GPVAL_Y_MAX]

GPVAL_Y_MIN と GPVAL_Y_MAX は、xrange に関係なく同じ値になります。

解決策はありますか?

4

3 に答える 3

22

必要な変数はGPVAL_DATA_Y_MINGPVAL_DATA_Y_MAXで、特定の範囲でプロットされたデータの y 最小/最大です。 GPVAL_Y_MINまた、プロットの境界線がどこにあるかを示すため、一般的にはあまり役に立ちません (一般に、gnuplot はデータとプロットの端の間にわずかなスペースを残すためGPVAL_Y_MAX、これらの値は変数を少し超えています)。GPVAL_DATA...

これらの変数を利用するには、plot コマンドに範囲指定子を使用する必要があります。

plot [1:3] 'data.txt'
set yr [GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX]
replot
...

ところで、u 1:2最初の 2 列を x と y としてプロットするのが gnuplot のデフォルトであるため、どの列をプロットしているかを思い出したくない場合を除いて、指定は冗長です。同じ出力ターミナルに再プロットしたくない場合 (再プロットすると同じプロットで 2 ページ目が作成される eps などの一部のターミナルでは役に立ちません)、次のコマンド シーケンスを使用します。

set terminal unknown
plot [1:3] 'data.txt'
set terminal <actual output terminal here>
set output 'output.trm'
plot [1:3][GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX] 'data.txt'

再び範囲指定子を使用していることに注意してください。今回は範囲が指定されています。これは with で指定するよりも少しコンパクトですがset yrange、コード行が長くなります。

gnuplot 4.6.0 以降を使用している場合は、このstatsコマンドを利用して再プロットを回避できます。このstatsコマンドは、一連の便利な変数を作成します

stats [1:3] 'data.txt'
plot [1:3][stats_min_y:stats_max_y] 'data.txt'

ちょっと変わったコマンドで、

stats [1:3] 'data.txt'
plot [stats_min_x:stats_max_x][stats_min_y:stats_max_y] 'data.txt'

実際のデータがどこにあるかに基づいて、プロットを x 方向に塗りつぶします。たとえば、{(1.1, 3), (2, 4), (2.9,5)} にデータ ポイントがある場合、x 範囲は [1.1:2.9] に設定されます。

于 2012-11-27T11:52:49.767 に答える
0

このように使用して、関数の x 範囲を定義します

plot [0:5] sin(10*x) + cos(3*x)

また、プロットする前に範囲を設定できます

set xrange [0:5]
plot sin(10*x) + cos(3*x)

ここに画像の説明を入力

于 2019-08-07T15:03:17.117 に答える