Получение значения определенного элемента из другой строки в gnuplot - PullRequest
6 голосов
/ 28 октября 2008

Используя gnuplot 4.2, возможно ли получить значение определенного столбца / строки и каким-либо образом использовать это значение?

Например, допустим, мой файл данных содержит следующее

#1  2
7  13
5  11
23 17
53 12

Для простого графика, где столбец 1 - это ось x, а столбец 2 - это ось y, я бы: -

plot 'datafile' using 1:2

Я пытаюсь нормализовать все данные в столбце 2 по первому элементу в этом столбце (13). Есть ли способ сделать это в самом gnuplot (то есть, не прибегая к языку сценариев или что-то для предварительной обработки данных)?

Приветствия

Ответы [ 3 ]

5 голосов
/ 06 февраля 2015

Используя демонстрацию скользящих средних, мне удалось получить график, нормализованный к первому значению второго столбца.

Переменная base используется для хранения контрольного значения, а функция first инициализирует base в первой строке.

first(x) = ($0 > 0 ? base : base = x)
plot file.dat u 1:(first($2), base/$2)

Следует отметить, что это не было сделано с использованием gnuplot 4.2.

Редактировать: Обновлено с учетом рекомендаций Кристофа.

2 голосов
/ 20 сентября 2009

Если ваше базовое значение (например, 13) находится в первой строке вашего набора данных, вы сможете делать то, что хотите, используя CVS-версию gnuplot.

Взгляните на демонстрацию скользящих средних . Вдоль этих строк вы могли бы написать пользовательскую функцию, которая сохраняет базовое значение в пользовательской переменной при первом вызове и возвращает эту переменную при последующих вызовах.

(Поскольку эта демонстрация указана только для версии CVS, я предполагаю, что требуемая функциональность недоступна в текущей версии выпуска.)

0 голосов
/ 20 января 2009

объявите новый столбец, полный 13, затем используйте:

построить файл данных, используя 1: ($ 2 / $ 3)

...