我正在尝试从包含时间戳的文件中绘制一些数据,并将注释作为字符串和各种其他数据。
到目前为止,为了将所有评论作为标签与时间一起绘制,我正在寻找某种智能间距,以便评论不重叠。
我也在寻找一种过滤评论的方法。我有另一列,指定评论是否应该隐藏。我在conditional plotting使用此声明:
plot 'data' using $1:0:($7==0?$6:" ")
它正在过滤数据点,但如果Statment为true,它不会显示($ 6)中的字符串,而是显示0。
我认为如果距离太小,我可以通过手动操作时间来处理间距,但是工作过滤器会有很大的帮助。
之前有没有人处理过这类问题?到目前为止,我在下面添加了一张图片。
我感谢任何建议。谢谢。
答案 0 :(得分:0)
为了使您的标签不重叠,如何使用rotate by -60
向下旋转它们?
默认的底部边距会将它们剪掉,在这种情况下,您需要使用set bmargin 10
之类的内容展开它。
要有条件地绘图,当条件为假时,您需要生成数值错误,而不仅仅是零值。最简单的方法可能是:
plot 'data' using $1:0:($7==0?$6:NaN)
虽然在较旧的脚本中,人们经常会看到1/0
用于生成NaN
,如:
plot 'data' using $1:0:($7==0?$6:1/0)
您可以设置显式标签,而不是条件绘图,如:
set xdata time
set timefmt "%d/%m/%y\t%H%M"
set format x "%d/%m\n%H:%M"
set xrange [ "1/6/93":"1/11/93" ]
set grid
set style data fsteps
set bmargin 10
set label 1 'Look at the spike here' at '01/10/93',0.05 rotate by -45 point
# https://github.com/gnuplot/gnuplot/blob/master/demo/timedat.dat
plot 'timedat.dat' using 1:4 notitle
答案 1 :(得分:0)
要在using
表达式中使用文本字段,必须使用stringcolumn
函数。对于你的例子,像
plot 'data' using $1:(0):($7==0 ? stringcolumn(6) : " ") with labels
应该适用于您问题的过滤方面。