我希望每个 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 ''
我该如何解决这个问题?
您的情况的最短答案(选中
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
结果: