上図の通り。この図は、テキスト ファイルのデータ ポイントから生成されます。私の質問は、グラフがジャンプした場合、どの2点でも線を削除するにはどうすればよいですか? (私の写真では、グラフがx〜260でジャンプしていることがわかります)
私の目的は、このグラフを区分関数のように見せたいだけであり、グラフの中央の線がジャンプするために接続されるべきではないことに注意してください。
gnuplot では、どこかに無効なデータ値がある場合や空の行がある場合に、行をいくつかの部分に分割できます。
最初の状況ではusing
、前のポイントとの差が大きすぎるかどうかをステートメント内で確認し、現在のポイントを無効にすることができます。しかし、それでは接続線だけでなく、ジャンプ後の最初のポイントも失うことになります。
lim=3
y2=y1=0
plot 'test.dat' using (y2=y1,y1=$2,$1):($0 > 0 && abs(y2-y1) > lim ? 1/0 : y1) with linespoints
私が使用したテストデータファイルは
1 1
2 1.1
3 0.95
4 1
5 5
6 6
7 5.5
8 5.8
9 -2
10 -2.5
11 -4
ご覧のとおり、x=5 と x=9 の点が失われています。
awk
または、フィルタリングなどの外部ツールを介してデータをパイプすることもできます。この場合、連続する 2 つの y 値の差が制限を超えると、空の行を挿入できます。
filter(lim) = 'awk ''{if(NR > 1 && sqrt((y-$2)**2) > '.lim.') print ""; print; y=$2}'' test.dat'
plot '< '.filter(3) using 1:2 with lines
awk にはない関数sqrt((..)**2)
をシミュレートするためにのみを使用したことに注意してください。abs