Построение функции "один-много" в gnuplot

У меня есть файл данных, который выглядит так:

    a               b                     c                   d
9.91804289    0.32890611E-04        2.253113185e-08    2.858389795e-08
9.91804289    0.32890611E-04        2.253113185e-08    2.858389795e-08
9.89517766    0.32597535E-04        2.255018344e-08    2.742542369e-08
9.86882582    0.33125571E-04        2.251589285e-08    2.650318558e-08

Теперь все b, c и d являются функциями a. Однако b сильно варьируется в зависимости от a (и достигает одного и того же значения при разных a). Мне нужно построить график c и d как функцию от b. Но из-за этой вариации b (в основном из-за ее природы «один-много») у меня есть нежелательные ветви на графиках c и d. Есть ли способ в gnuplot, где я могу построить его так, как я хочу, установив xrange, используя только a?

Не могли бы вы поподробнее описать, что вы пытаетесь построить? Вы хотите выбрать только подмножество строк из вашего файла данных, в которых значение попадает в заданный диапазон?

user8153 13.09.2018 21:54

да. Точно. И для этой цели я хочу выбрать его, используя диапазон значений в столбце a, используя данные в столбце b в качестве оси x и c и d по оси y.

Aditya Putatunda 13.09.2018 22:20
0
2
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Взгляните на help using, чтобы узнать, как отфильтровать входные данные. Если вы хотите выбрать только те строки в вашем файле данных, где значение первого столбца находится между amin и amax, вы можете сделать что-то вроде

amin=9.8
amax=9.9
plot "filename.dat" using 2:(($1 > amin && $1 < amax ) ? $3 : NaN) title "c" with points, \
     "" using 2:(($1 > amin && $1 < amax ) ? $4 : NaN) title "d" with points

Ух ты! Это работает ... Не могли бы вы добавить один небольшой комментарий, объясняющий, какова здесь функция NaN? Большое спасибо!

Aditya Putatunda 14.09.2018 01:06

NaN означает «не число», что указывает gnuplot просто не рисовать точки данных, для которых условие ($1 > amin && $1 < amax ) равно false. Вместо Nan вы также можете использовать 1/0 или что-то подобное.

user8153 14.09.2018 01:20

Взгляните на help ternary, который объясняет эту конструкцию.

user8153 14.09.2018 01:27

Другие вопросы по теме