график, если столбец А имеет подстроку - PullRequest
3 голосов
/ 01 октября 2011

Мне нужно сделать это в gnuplot:

plot 1:4 where col 2=="P1", col 3=="3", col 1 has substring "blur1"

Вот набор данных:

col_1          col_2        col_3    col_4
gcc.blur1.O0   P1           3        10.5
icc.blur1.O2   P2           5        9.8
gcc.blur2.O3   P2           3        8.9

Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 02 ноября 2011

AFAIK вам нужно использовать внешний скрипт для проверки подстрок. Что-то вроде awk и использовать

plot "< awk '{...awk commands...}' input.dat"

Если вы просто хотите проверить col_2 для P1, вы можете сделать это в gnuplot через

f(x,y)= (x eq "P1"? y : 1/0)

plot "input.dat" u 3:(f(strcol(2),$4))

strcol (n) получает n-тый столбец в виде строки. «eq» можно использовать для сравнения строк.

0 голосов
/ 01 июля 2019

Такая простая проверка может быть выполнена с помощью функции strstrt в gnuplot. Возвращает индекс первого найденного символа или 0, если подстрока не найдена:

strstrt(strcol(3), 'blur1') > 0

Итак, ваша команда заговора может выглядеть как

matchesLine(col1, col2, col3) = strstrt(strcol(1), col1) > 0 && strcol(2) eq col2 && strcol(3) eq col3
plot 'file' using (matchesLine("blur1", "P1", "3") ? $1 : 1/0):4
0 голосов
/ 30 июня 2019

Если вы заранее знаете точное положение подстроки, вы можете попытаться проверить равенство в этой части следующим образом:

strcol(1)[5:9] eq 'blur1'

ps .: Вот несколько полезных примеров работы со строками в gnuplot:
http://gnuplot.sourceforge.net/demo/stringvar.html

...