我想使用if语句制作直方图。即:
u ($5 < 356 ? $9:1/0)
。例如,当$ 5列低于某个数字时,绘制$ 9列。
在线发现的简单脚本(也在一些stackoverflow问题中):
n=100 #number of intervals
max=7.5 #max value
min=4.5 #min value
width=(max-min)/n #interval width
#function used to map a value to the intervals
hist(x,width)=width*floor(x/width)+width/2.0
set boxwidth width*0.8
#count and plot
plot "file.txt" u (hist(($3 < 356 ? $9:1/0),width)):(1.0) smooth freq w boxes lc rgb "green" notitle
不起作用,产生解决方案的重叠很难解释。不同比例的水平线过度绘图是问题所在。
plot "file.txt" u (hist($9,width)):(1.0) smooth freq w boxes lc rgb "green" notitle
它显示了所有的点但很好地分开了。我绘制范围[0:500]以更好地显示第一种情况下的水平线。
如果需要该文件(因为它很大),我将提供一个示例。
感谢所有人。