2014-06-07 3 views
1

Я пытаюсь воспроизвести простую гистограмму с Gnuplot с простым макросом:как гистограмма в Gnuplot работает

reset 
n=9 #number of intervals 
width=1 #interval width 
hist(x,width)=width*floor(x/width) 
set terminal pngcairo size 800,500 enhanced font 'Verdana,14' 
set output "test.png" 
set boxwidth width 
set style fill transparent solid 0.5 border #fillstyle 

set xrange [*:*] 
set yrange [0:2.] 

set xlabel "x" 
set ylabel "Freq." 

plot "const.dat" u (hist($1,width)) smooth freq w boxes lc rgb "orange" notitle 

йотом данных следует:

1.1 
1.1 
1.1 
1.1 
1.1 
1.1 
1.1 
1.1 

Теперь я хотел бы понять, как исторы (х, ширина) работает в том смысле:

hist(x,width)=width*floor(x/width) 

работает с каждым числами, принимая ширину = 1, а затем:

Hist (1.1,1) = 1 * пол (1,1/1) = 1

и так далее, так?

Теперь (hist($1,width)) возьмите все элементы в столбцах и примените функцию hist для всех.

И я смогу сделать следующий график с макросом выше :! enter image description here

Вопрос: Если я использую (hist($1,width)):(1.0) Я не понимаю, йота участки меняются все элементы остаться в одной коробки (от 0,5 до 1,5)? enter image description here

ответ

1

В первом случае вы указываете только один столбец в инструкции using. Поскольку вам нужно как минимум два (x и y-значение), указанное значение (ваш hist(...)) используется как y-значение, а номер строки - как x-значение. Операция smooth frequency работает так, что она принимает все точки с одинаковым значением x и суммирует соответствующие значения y. В первом примере у вас нет равных x-значений, поскольку используется номер строки.

Во втором примере вы используете значение hist(...) как x-значение, которое равно 1 для всех строк. Значение y равно 1.0. Таким образом, вы получаете одну коробку в x=1 и y=8 (количество строк).

Смежные вопросы