Защо опцията 'set table' в Gnuplot пренаписва първия запис в последния ред?

Опитвам се да създам хистограма от някои данни, които имам, и само за да добия представа за честотите и контейнерите и т.н., задавам таблица, така че вместо да я чертае, тя поставя информацията за хистограмата в конкретен файл. Така например, ако моите данни бяха

11
12 
11
11
15
12
10

тогава получавам нещо подобно

10 1
11 3
12 2 
15 1 

където втората колона дава честотите на всеки запис. Но това, което забелязах е, че когато gnuplot създава този файл, вместо да получа това, което получавам по-горе, получавам

10 1
11 3
12 2 
15 1
10 1

т.е. първият запис се повтаря отново в края на таблицата. Ако исках да начертая само хистограмата, т.е. този файл, добре е, няма проблем. Но това, което трябва да направя, е да начертая честотите в logscale и ако не коригирам това, т.е. ръчно заредя файла всеки път и след това се отърва от последния ред, това начертава странна точка далеч от останалата част от тенденцията на моите данни.. Чудех се защо се случва това и дали има някакъв начин да го изключа? Кодът, който използвам е следният:

set table 'tableavalanchesizeGSA'
bw = 50.0
bin(x,s)=s*int(x/s)
plot 'avalanche_size_GSA.dat' using (bin($1,bw)+bw/2.0):(1.0/2048000) smooth frequency    with points
unset table
set logscale y
plot 'tableavalanchesizeGSA' with points title ''

Някой знае ли защо се случва това? И ако има автоматичен начин за изключване?


person Maheen Siddiqui    schedule 21.08.2013    source източник


Отговори (1)


Това поведение е gnuplot бъг. За да заобиколите този бъг, можете да насочите изхода на вашата таблица през head, преди да пишете в изходния файл:

set output "| head -n -2 > tableavalanchesizeGSA"
set table
bw = 50.0
bin(x,s)=s*int(x/s)
plot 'avalanche_size_GSA.dat' using (bin($1,bw)+bw/2.0):(1.0/2048000) smooth frequency with points
unset table

Трябва да пропуснете последните два реда, защото gnuplot пише празен ред в края. Също така трябва да използвате изрично set output, тръбопроводите изглежда не работят, когато задавате изхода с set table "| head ...".

person Christoph    schedule 21.08.2013
comment
О благодаря ти! Благодаря за обяснението, мислех по някакъв начин да премахна последния ред, но не знаех как да го направя. Благодаря :) - person Maheen Siddiqui; 21.08.2013