Gnuplot: странное поведение - PullRequest
0 голосов
/ 23 ноября 2018

Я хотел бы построить файл, подобный следующему:

this is some header
that is written by the measurement software
for example it contains the date: 2018/1/1

column 1    column 2    column 3    column 4
1   12  13  13  14
2   15  15  15  15
3   10  12  13  15
4   9   9   8   8
5   7   9   10  11
6   6   6   6   6

Таким образом, многострочный заголовок отделен от данных пустой строкой.Достаточно просто, просто используйте команду every, как я думал.Но есть некоторые проблемы (MWE):

reset

$testdata << EOD
this is some header
that is written by the measurement software
for example it contains the date: 2018/1/1

column 1    column 2    column 3    column 4
1   12  13  13  14
2   15  15  15  15
3   10  12  13  15
4   9   9   8   8
5   7   9   10  11
6   6   6   6   6
EOD

# set datafile separator "\t"
# set key autotitle columnhead
# set datafile commentschars "abcdefghijklmnopqrstuvwxyz"

# errors: bad data on line X:
# plot $testdata
# plot $testdata every ::1
# plot $testdata every ::2
# plot $testdata every ::3
plot $testdata every ::4

Если я строю только файл без every, я получаю ошибку bad data (как и ожидалось).Насколько я понимаю, мне нужно игнорировать первые 4 строки, потому что они являются просто текстом и, следовательно, должны использовать plot $testdata every ::4, но это также игнорирует первые 3 точки данных, и график начинается с x = 4.Использование every ::3 возможно, тогда график начинается с x = 3.Использование every ::1 или every ::2 снова приводит к ошибке bad data.

Если я раскомментирую set key autotitle columnhead, заголовок просто изменится на «is» или «this is a Header» (в зависимости от datafile separator)Таким образом, голова не игнорируется вообще.Также, в то время как сейчас every ::2 работает (..и график начинается с x = 2), every ::1 по-прежнему выдает ошибку.

Моя цель состоит в том, чтобы получить график, который включает в себя каждую точку данных, очевидно + с использованием заголовков столбцовКак название.Мой текущий обходной путь - set datafile commentschars "abcdefghijklmnopqrstuvwxyz", но это мешает мне использовать заголовки столбцов.Есть ли у gnuplot единственный способ справиться с этим?Я НЕ могу изменить форматирование файла, так как это вывод измерительного устройства.Кроме того, мне известны такие инструменты, как awk, но я не являюсь администратором и не могу установить программное обеспечение.Этого также следует избегать, чтобы запускать скрипт на разных компьютерах.

Любая помощь очень ценится!Большое спасибо

1 Ответ

0 голосов
/ 25 ноября 2018

Фильтрация данных с помощью every выполняется только после анализа всех данных.Вот почему вы получаете предупреждение и ошибки, потому что первая строка не может быть правильно проанализирована.

Чтобы пропустить некоторую строку до начала фактического анализа, используйте ключевое слово skip:

$testdata <<EOD
this is some header
that is written by the measurement software
for example it contains the date: 2018/1/1

"column 1"    "column 2"    "column 3"    "column 4"
1   12  13  13  14
2   15  15  15  15
3   10  12  13  15
4   9   9   8   8
5   7   9   10  11
6   6   6   6   6
EOD

set key autotitle columnheader
plot $testdata skip 4 using 1:2 w lp

enter image description here

...