2017-09-24 2 views
0

In gnuplot, können Sie ein Histogramm wieZentrieren Bins in Gnuplot Histogramm

binwidth=#whatever# 
set boxwidth binwidth 
bin(x,width)=width*floor(x/width)+binwidth/2.0 
plot "gaussian.data" u (bin($1,binwidth)):(1.0/10000) smooth freq w boxes 

Zur Zeit erstellen können, scheinen meine Bins auf der rechten Kante zentriert werden. Das heißt, der Behälter, der x = 0 entspricht, hat seinen rechten Rand über Null. Ich möchte die Behälter zentriert haben. Das heißt, ich möchte das Zentrum jedes Fachs über den entsprechenden x-Werten haben. Ich habe versucht, mit den Argumenten von bin (x, width) zu spielen, war aber nicht erfolgreich. Irgendwelche Vorschläge?

Antwort

1
bin(x,width) = width*round(x/width) 

sollte den Trick tun. Sie können einfach visualisieren, wie das Binning funktioniert:

binwidth = 0.5 
round(x) = floor(x+0.5) 
bin(x,width) = width*round(x/width) 
set xrange [-2:2] 
set xlabel "x" 
set ylabel "bin position" 
set grid 
plot bin(x,binwidth) 

gibt

enter image description here

Beachten Sie, dass [-0.25,0.25] in Werte in das bin an Position abgebildet werden 0, Werte in [0,25, 0,75] werden auf die Position 0,5 und so weiter abgebildet.

+0

hast du dein eigenes 'round (x)' definiert? – Ptheguy

+0

Ich denke 'rund (x) = x-Boden (x) <0,5? Boden (x): ceil (x) '? – Ptheguy

+0

Sie haben Recht; Ich habe die "runde" Funktion vergessen. Ich habe meine Antwort bearbeitet, um 'round (x) = floor (x + 0.5)' hinzuzufügen. Das tut mir leid! – user8153

Verwandte Themen