Почему опция «установить таблицу» в 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

т. е. первая запись снова повторяется в конце таблицы. Если бы я хотел построить только гистограмму, то есть этот файл, все в порядке, без проблем. Но что мне нужно сделать, так это отобразить частоты в логарифмической шкале, и если я не исправлю это, то есть буду каждый раз загружать файл вручную, а затем избавляться от последней строки, это отобразит нечетную точку вдали от остальной части тренда. моих данных .. Мне было интересно, почему это происходит и есть ли способ отключить это? Я использую следующий код:

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