2015-06-22 2 views
1

У меня есть большой (80Mb +) входной файл с образцами, как это (временной метки в первом столбце UNIX-эпоха с миллисекундах):gnuplot xrange не принимается должным образом?

1433908383.289 25219.334734712 25219.946173616 9.512001270e-06 1.003999932e-05 9.512001270e-06 1.003999932e-05 0.000000000e+00 0.000000000e+00 
1433908383.336 25219.364742792 25219.985225320 9.528001101e-06 1.003999932e-05 9.528001101e-06 1.003999932e-05 0.000000000e+00 0.000000000e+00 
1433908383.362 25219.399744192 25220.016488160 9.512001270e-06 1.003199941e-05 9.512001270e-06 1.003199941e-05 0.000000000e+00 0.000000000e+00 
1433908383.386 25219.429734824 25220.039910600 9.504001355e-06 1.003999932e-05 9.504001355e-06 1.003999932e-05 0.000000000e+00 0.000000000e+00 

, что, при построении графика со следующим сценарием:

set terminal pngcairo enhanced font "arial,10" size 1024, 768; 
set key below; 
set grid; 

set xdata time; 
set timefmt "%H:%M:%S"; 
set format x "%H:%M:%S"; 
set datafile separator "\t"; 
set xlabel "Time (UTC)"; 
set ylabel "seconds"; 

set datafile nofpe_trap; 

plot "data.tsv" using ($1-946684800):6 with points linecolor rgbcolor "#EE0000" axes x1y1 title "plot 1"; 

производит следующий график:

Но когда я добавляю следующее непосредственно передкоманда:

set xrange ["10:00:00","11:00:00"] 

вместо этого я не получаю никакого вывода и следующее сообщение об ошибке:

gnuplot> plot "data.tsv" using ($1-946684800):6 with points linecolor rgbcolor "#EE0000" axes x1y1 title "plot 1"; 
                               ^
    line 0: all points y value undefined! 

Я подобран в timefmt и есть четко данные в этом диапазоне. Так что же дает?

Примечания: Это gnuplot 4.4, а нижеследующее изображение имеет неправильные метки меток, потому что я изначально оставил 8 в смещении эпохи.

+0

Проблема в том, что «10:00:00» ISN 'однозначно определен. Если день, месяц и год не указаны, gnuplot 4.4 использует первый январь 2000 года, в котором не находятся ваши данные. – Christoph

+0

Но разве я не должен давать 'xrange' в формате' timefmt'? У моего 'timefmt' нет компонента даты. Как я могу обойти это? –

+0

Настройка xrange - единственное приложение вашего 'set timefmt', потому что вы явно обходите параметры timefmt при чтении данных. Вместо этого вы также можете указать xrange в секундах (начиная с 1 января 2000 года), как и для x-значений. – Christoph

ответ

1

Это работает, когда я обеспечиваю числовые метки в качестве диапазона, несмотря на то, что мой timefmt выглядит как читабельная строка времени:

set xrange [1444122000:1433928600] 
+0

Я бы не назвал это фальшивой датой. В вашем наборе данных содержится полная информация о дате (временная метка Unix), поэтому, если вы хотите указать диапазон для построения графика, вы также должны предоставить полные даты для пределов xrange. Как gnuplot знает, к какой дате вы обращаетесь? То, что вы можете указать xrange в том же формате, что и входные данные, имеет смысл, если вы используете 'timefmt' для синтаксического анализа входных данных и установки xrange. – Christoph

+0

@ Кристоф: Ну, в случае с другими файлами журнала, которые хранят только «HH: MM: SS», дата _is_ полностью искусственна. Эта часть ответа/решения немного тангенциальна, хотя вопрос был о файле с отметками времени UNIX. –

+0

Да, и в случае, если ваш файл журнала использует только «HH: MM: SS», вам также не нужна эта искусственная дата. В этом весь смысл. – Christoph

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