2014-12-24 5 views
1

У меня есть куча данных, как это:Расщепление линии в Gnuplot на основе столбца

0 0 50.5 -3.39358e-05 
0 0 150.5 5.11472e-06 
0 0 250.5 -3.87604e-06 
0 0 350.5 -2.54219e-05 
0 0 450.5 3.92257e-06 
0 0 550.5 0.00198317 
0 0 650.5 -4.96953e-05 
0 0 750.5 -3.60458e-05 
0 0 850.5 -2.30878e-05 
0 0 950.5 1.67545e-07 
1 0 126.5 4.17028e-05 
1 0 226.5 -1.43637e-05 
1 0 326.5 1.42918e-06 
1 0 426.5 1.18147e-05 
1 0 526.5 0.0020478 
1 0 626.5 1.58651e-06 
1 0 726.5 3.18537e-05 
1 0 826.5 2.47536e-05 
1 0 926.5 -4.20655e-05 

Я хочу построить что-то вроде этого на Gnuplot:

plot file using 3:($4+$1*factor) with lines 

Но это дает мне одну непрерывная линия для всех данных. Я хочу одну строку для каждого уникального значения $1. т.е. одна непрерывная линия для всех данных, где $1=0, затем другая строка для $1=1 и так далее. Как я могу добавить такой разрыв в строке?

+0

Если ваши данные имеют одинаковую структуру, а строки '$ 1 = 0' и' $ 1 = 1' одинаковы, вы можете использовать ключевое слово 'every' в команде' plot'. – DragonHu

ответ

1

Вы можете использовать внешний инструмент для предварительной обработки данных, чтобы добавить пустую строку, когда значение в первой колонке изменений (не работает на Windows):

plot '< awk ''{if(x!=$1) {print ""}; x=$1;print}'' test.dat' using 3:($4 + $1*factor) 

Пустая строка в файле данных предотвращает соединение gnuplot с разделенными точками данных.

+0

Это очень понравилось. –

+0

Я вроде получаю то, что вы там делали с awk, но можете ли вы рассказать мне, как gnuplot интерпретирует его? –

+0

'<' сообщает gnuplot, чтобы получить данные из того, что записывает следующее выражение оболочки в стандартный вывод. – Christoph

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