gnuplot - 在直方图中选择bin中心

时间:2012-10-01 15:32:13

标签: gnuplot histogram

我正在用命令绘制直方图:

n=3
max=0.5
min=-2.5
width=(max-min)/n
hist(x,width)=width*floor(x/width)+width/2.0
plot "< awk '{if (\$1<3.9 && \$1>3.8) {print \$0}}' /path_to_file/" u (hist(\$2,width)):(1.0) smooth freq w boxes lc rgb "black" lt 1 lw 0.5 notitle

让我这样:

histogram

显然,我猜测基于数据文件,gnuplot自行决定选择间隔[1.0:0.0] - [0.0:-1.0] - [ - 1.0:-2.0]箱子以[0.5:-0.5:-1.5]

为中心

我需要那些箱子使用间隔[0.5:-0.5] - [ - 0.5:-1.5] - [ - 1.5:-2.5],这会使箱子以[0.0:-1.0:-2.0]为中心< / p>

我该如何做到这一点?

2 个答案:

答案 0 :(得分:0)

直方图中的间隔由函数hist确定。 hist函数将数字范围缩小为单个值,因此gnuplot可以在以hist函数返回的值为中心的条形图中绘图。

在您的原始帖子hist(x,width)=width*floor(x/width)+width/2中。因此,hist(x,width)=0.5width=1会获得0 <= x < 1。最终,您将得到一个以0.5为中心的条形图。

现在,如果要将间隔设置为[-0.5:0.5],[ - 0.5:-1.5],依此类推,您可能需要更改hist函数,使其返回{{ 1}} 0.0width=1时。

-0.5 <= x < 0.5

答案 1 :(得分:0)

我认为你想要的功能是

hist(x,width)     = width*(floor(x/width+0.5))

这是早期答案https://stackoverflow.com/a/13896530/834416

的等效但简化版本
hist(x,width)     = width*floor((x + width/2)/width)

我遇到了同样的问题,并在https://stackoverflow.com/a/24923363/834416

发布了答案,示例代码和输出