所以我的.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值未定义!” 所以我的问题是,如果有人能告诉我我做错了什么,除了它为什么是错的。 我知道你可能会帮助其他人解决这类问题,但我不知道发生了什么,我想了解,所以如果有人如果有点善良帮助我,我会非常感激
答案 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