2016-02-15 3 views
0

Я просто обнаружил gnuplot 4.6 и красивый инструмент для петли. Я хочу построить кривую с другой осью x, но она не работает. У меня есть файл с именем file.txt, где есть список данных, таких как:Петля Gnuplot с различной осью

E002 = ... 

E003 = ... 

. 

. 

. 

E021 = ... 

Дело в том, чтобы сместить ось х каждого участка с соответствующими данными, что-то вроде этого:

load 'file.txt' 
plot for [a=2:21] 'my_data_file.dat' u ($1+'E00'.a):a w l 

Но это не работает, и у меня есть ошибка: 'Non-numeric string found where a numeric expression was expected'.

Я не знаю, как обойти эту проблему.

Второй вопрос, Я хотел бы после того, как суммировать весь столбец, но сдвинулся, как раньше. Что-то вроде:

($1+E002):$2 + ($1+E003):$3 +... 

Есть ли способ сделать это?

ответ

2

Для первого вопроса вам нужно использовать value, чтобы получить значение переменной.

я предлагаю использовать более универсальную sprintf команду для манипулирования строками:

plot for [a=2:21] 'my_data_file.dat' u ($1+value(sprintf('E%03d',a))):a w l 

Тип help value и help sprintf, чтобы получить более подробную информацию об этих командах

Я не очень хорошо понимаю, второй вопрос, может быть, что-то вроде этого может помочь?

my_sum=0 
plot for [a=2:21] my_val=value(sprintf('E%03d',a)), my_sum=my_sum+my_val, 'my_data_file.dat' u ($1+my_val):a w l 

print my_sum 

последней строки, должен напечатать сумму всех вас Exxx значений.

+0

СПАСИБО, первое решение работает !!! Что касается второго вопроса, я хочу суммировать значение в каждом столбце ($ 2 + $ 3 + ...) и нарисовать его, но я хочу, чтобы это значение (если мы рассматриваем $ 2 как fonction): $ 2 ($ 1 + E002) + $ 3 ($ 1 + E003). Ты знаешь, что я имею в виду ? –

+0

извините, что все еще неясно ... особенно часть (если мы рассматриваем $ 2 как fonction): $ 2 - это второй столбец ваших данных ... в вашем вопросе вы говорите '($ 1 + E002): $ 2 + ($ 1 + E003): $ 3 + ... 'это сумма двух графиков? попробуйте написать скрипт всего за 2-3 столбца, и мы будем использовать if с циклами. Мы можем расширить любой размер столбца – bibi

+0

Хорошо, если у меня есть функция f и другая функция g, я могу легко построить f (x + E002) + g (x + E003) вдоль x. Так что, если у меня есть много разных функций, я могу суммировать их с помощью цикла или нет и построить сумму. Я наблюдал за тем же, но не с функцией, с моими столбцами. Я хочу построить сумму каждого столбца, но сдвигается как функция. Я не знаю, возможно ли это с помощью столбца, даже с двумя. –

Смежные вопросы