2017-09-24 74 views
0

在gnuplot的定心箱,你可以创建一个像在gnuplot的直方图

binwidth=#whatever# 
set boxwidth binwidth 
bin(x,width)=width*floor(x/width)+binwidth/2.0 
plot "gaussian.data" u (bin($1,binwidth)):(1.0/10000) smooth freq w boxes 

目前的柱状图,我似乎箱的右侧边缘为中心。也就是说,对应于x = 0的bin具有大于零的右边缘。我希望以垃圾箱为中心。也就是说,我希望每个bin的中心位于相应的x值之上。我已经尝试了bin(x,width)的参数,但一直没有成功。有什么建议么?

回答

1
bin(x,width) = width*round(x/width) 

应该诀窍。你可以简单的可视化的合并是如何工作的:

binwidth = 0.5 
round(x) = floor(x+0.5) 
bin(x,width) = width*round(x/width) 
set xrange [-2:2] 
set xlabel "x" 
set ylabel "bin position" 
set grid 
plot bin(x,binwidth) 

enter image description here

注意,在位置0值[-0.25,0.25]被映射到垃圾桶,在值[0.25, 0.75]被映射到位置0.5处的箱,等等。

+0

你有没有定义你自己的'round(x)'? – Ptheguy

+0

我猜'round(x)= x-floor(x)<0.5?地板(X):小区(X)'? – Ptheguy

+0

你是对的;我忘了“圆”功能。我编辑了我的答案,以添加'round(x)= floor(x + 0.5)'。对于那个很抱歉! – user8153