根据上图。该图片是根据文本文件中的数据点生成的。我的问题是,如果图表跳了,该如何在任意两点处删除该行?(在我的图片中,该图在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
过滤)通过管道传输数据。在这种情况下,当两个连续的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
注意,我sqrt((..)**2)
只使用了abs
awk所没有的模拟函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句