如何在 gnuplot 中创建统一的 bin 宽度?

问题描述 投票:0回答:1

Current histogram

我希望每个 bin 具有相同的宽度,但由于某些范围内没有值(例如:10 到 15),gnuplot 会自动增加其宽度以适应 10 到 20 的空间。

我已经像这样设置了垃圾箱:

binwidth=5
bin(x,width)=width*floor(x/width)
plot 'Module 2 Mod*100.txt' using (bin($1,binwidth)):(1.0) \
      smooth freq with boxes linecolor rgb "#FFCCE5" title ''

我该如何解决这个问题?

gnuplot
1个回答
0
投票

您的情况的最短答案(选中

help boxwidth
):

set boxwidth binwidth

请记住,通过

with boxes
绘制的框将以 x 值为中心。如果您有直方图,那么您可能需要框的范围,例如从0到5,从5到10等等。然后你必须添加半个
binwidth

一个最小的说明示例:

脚本:

### equal boxwith in histogram
reset session

# create some random test data
set table $Data
    set samples 20
    plot '+' u (rand(0)*100):(rand(0)*100) w table
unset table

set style fill solid 0.3
set key noautotitle
set tics out
set offset 1,1,0,0
set grid x,y
set xrange [0:100]
set xtic 10
binwidth     = 5
bin(x,width) = width*floor(x/width)

set multiplot layout 3,1
    set linestyle 1 lc "red"
    plot $Data u (bin($1,binwidth)):(1.0) \
         smooth freq with boxes ls 1

    set boxwidth binwidth
    set linestyle 1 lc "green"
    replot
    
    bin(x,width) = width*floor(x/width) + binwidth/2.
    set linestyle 1 lc "blue"
    replot
unset multiplot
### end of script

结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.