0

gnuplotを介して2つのデータセットをプロットしています。最初のものの値は〜200万から〜300万です。秒の値は1000から2000です。

ファイルからプロットしてshow variables allGPVAL_Y2_MINが正しい値に設定されていることを確認した後、GPVAL_Y2_MAXが間違っています。GPVAL_Y_MAXも間違っているのは奇妙なことですが、最初のセットだけをプロットすると、比較的良い値が得られます。

yrangey2rangeに異なる範囲を設定したいのですが、可能な値を事前に知ることができません。もちろん、できるだけ出力画面を埋めたいと思います。

どうすればそれができますか?

編集:現在使用されているコードを追加

#!/usr/bin/gnuplot
reset
# Get max and min value
plot 'test.dat' every ::1 using 3, '' every ::1 using 4
y1_max = GPVAL_Y_MAX;
y1_min = GPVAL_Y_MIN;
y2_max = GPVAL_Y2_MAX;
y2_min = GPVAL_Y2_MIN;
set terminal png size 1024, 768 #output format png
set format y "%.1s %c"
# show png in a window without save
set output '| display png:-'
set yrange [y1_min:y1_max]
set y2range [y2_min:y2_max]
plot 'test.dat' every ::1 using 3 lt rgb '#FF00FF' title "vsize" with line, \
     '' every ::1 using 4 lt rgb '#FF0000' title "rss" with line axes x1y2

ご覧のとおり、最初にデータをプロットして最小値と最大値を取得し、その後でターミナルを作成しています。

4

1 に答える 1

0

使用するデータファイルがない場合、問題は最初のパス(最小/最大値を収集する)で両方のデータセットをx1y1軸にプロットしているという事実にあると思います。2回目のパスでは、列4をx1y2軸にプロットしますが、実際には、デフォルト(自動スケーリングではなくハードコーディング)以外からy2範囲をリセットすることはありません。言い換えると:

plot 'test.dat' every ::1 using 3, '' every ::1 using 4 axes x1y2

しかし、これは別の質問を引き起こします-なぜあなたはただ自動スケーリングしないのですか?

set yrange [*:*]
set y2range [*:*]
于 2012-10-31T14:52:49.430 に答える