1

ここに画像の説明を入力

上図の通り。この図は、テキスト ファイルのデータ ポイントから生成されます。私の質問は、グラフがジャンプした場合、どの2点でも線を削除するにはどうすればよいですか? (私の写真では、グラフがx〜260でジャンプしていることがわかります)

私の目的は、このグラフを区分関数のように見せたいだけであり、グラフの中央の線がジャンプするために接続されるべきではないことに注意してください。

4

1 に答える 1

2

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

ここに画像の説明を入力

于 2014-12-06T19:58:47.023 に答える