2015-12-03 1 views
2

Так у меня есть .dat файл, который содержит значение, как следоватьНе удается создать гистограмму в Gnuplot «все точки у значения не определены»

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

Вывод из определения функции 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