无法在gnuplot中生成直方图“所有点y值未定义”

时间:2015-12-03 00:25:57

标签: gnuplot histogram

所以我的.dat文件包含以下值

d1 428
d2 412
d3 404
d4 433
d5 421
d6 402
d1 424
d2 440
d3 416
d4 394
d5 413
...

另外,请将我的.sh文件用于gnuplot

reset
n = 1
max = 10.
min = 0.
width = (max-min)/n
hist(x,width) = width*floor(x/width) + width/2.0

set xrange[max:min]
set yrange [0:]

set term png 
set output "histogram.png"

set boxwidth width*0.5
set style fill solid 0.5
set tics out nomirror

set xlabel "Valor dado"
set ylabel "Frecuencia"


plot "dice.dat" u (hist($1,width)):(1.0) smooth freq w boxes lc rgb "red" notitle

但是gnuplot说“所有点y值未定义!” 所以我的问题是,如果有人能告诉我我做错了什么,除了它为什么是错的。 我知道你可能会帮助其他人解决这类问题,但我不知道发生了什么,我想了解,所以如果有人如果有点善良帮助我,我会非常感激

1 个答案:

答案 0 :(得分:0)

从您对hist函数的定义中推断,width是二进制文件的宽度,您不能将xrange设置为[min:max],因为您只使用这些值来定义一个垃圾箱。另一件事是,gnuplot的列计数从1开始,数值在第二列,因此您必须使用hist($2, width)

然后是一个工作的最小脚本

reset
width = 10.0
hist(x,width) = width*floor(x/width) + width/2.0

set yrange [0:*]

set boxwidth 0.5 relative
set style fill solid 0.5

plot "dice.dat" u (hist($2,width)):(1.0) smooth freq w boxes lc rgb "red" notitle