У меня есть файл данных, который выглядит так:
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?
да. Точно. И для этой цели я хочу выбрать его, используя диапазон значений в столбце a, используя данные в столбце b в качестве оси x и c и d по оси y.
Взгляните на 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? Большое спасибо!
NaN означает «не число», что указывает gnuplot просто не рисовать точки данных, для которых условие ($1 > amin && $1 < amax )
равно false
. Вместо Nan
вы также можете использовать 1/0
или что-то подобное.
Взгляните на help ternary
, который объясняет эту конструкцию.
Не могли бы вы поподробнее описать, что вы пытаетесь построить? Вы хотите выбрать только подмножество строк из вашего файла данных, в которых значение попадает в заданный диапазон?