Гнуплот два условия в одной троичной - PullRequest
0 голосов
/ 07 февраля 2019

Существует таблица, состоящая из четырех столбцов, например

0.1   0.2   2   5
0.3   0.5   3   7 
0.2   0.9   4   8

0.5   0.2   5   5 

0.3   0.1   2   10

0.8   0.7   2   4

Как видите, есть пустые строки.Что я хочу сделать, так это составить график для этой таблицы, но у меня есть два условия.Во-первых, столбцы 3 и 4 отображаются только в том случае, если столбцы 1 и 2 соответственно меньше 0,4, поэтому в этом случае должны отображаться только 1-я и 7-я строки.Во-вторых, пустые строки следует игнорировать.

Легко, мой график не должен показывать мне строки без значений, что означает, что строки 4,6 и 7 не должны отображаться на графике.Кроме того, первое условие должно быть выполнено.

, поэтому я набрал вот так:

reset
plot 'table.txt' u ($1 < 0.4 || $1 == 1/0 ? $3 : 1/0):($2 < 0.4 || $2 == 1/0 ? $4 : 1/0) pt 7 ps 0.5

, но я не смог получить то, что хотел.Должны появиться только две точки, строки 1 и 7, но эти пустые строки также были нанесены на график.Это ||(Я использовал это как значение 'и') неправильно?

1 Ответ

0 голосов
/ 07 февраля 2019

Пустые строки в любом случае не отображаются.Итак, используйте ваш троичный оператор, чтобы проверить, является ли $1<0.4 && $2<0.4.Если это так, поместите текущее значение $4 в y0 и $3 в x0 .... и нанесите x0 и y0.Если вы хотите иметь соединенные линии, например, with linespoints, вам может потребоваться выполнить еще несколько действий.

### filter data values
reset session

$Data <<EOD
0.1   0.2   2   5
0.3   0.5   3   7 
0.2   0.9   4   8

0.5   0.2   5   5 

0.3   0.1   2   10

0.8   0.7   2   4
EOD

x0 = y0 = NaN
plot $Data u ($1<0.4 && $2<0.4 ? (y0=$4, x0=$3) : NaN):(y0) w p pt 7 ps 2
### end of code
...