Как мне преобразовать целое число в строку в gnuplot?

Я знаю, как использовать $ с using в примерах типа

plot datafile using f($1):g($2)

для построения функций столбца данных. Но я хочу использовать эту функцию в цикле:

plot for [c=1:10] datafile using f($(c)):g($(c+1))

Конечно, этот код не работает. Я думаю, что если я знаю, как преобразовать целое число c в строку (или один символ ASCII), то это будет работать. Как я могу это сделать?

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

Ответ 1

Вы ищете что-то вроде:

plot for [c=1:5] datafile using (column(c)):(column(c+1))

Это будет делать: plot datafile u 1:2, "" u 2:3, "" u 3:4, "" u 4:5, "" u 5:6

Ответ 2

Вы можете использовать встроенную функцию sprintf для преобразования чисел в строку

gnuplot>  a=3; b=6;
gnuplot>  plot a*x+b title sprintf("a=%1.2f; b=%1.2f",a,b)

Ответ 3

Как насчет чего-то подобного? Оператор цикла может отличаться в зависимости от используемой оболочки. В приведенном ниже примере используется bash.

plot '< for i in 1 2 3 4 ; do echo $i ; done' us ($1):($1+1)

Ответ 4

При необходимости добавьте пустую строку. Например.:

gnuplot> a=42
gnuplot> print a." questions"
         internal error : STRING operator applied to non-STRING type

gnuplot> print "".a." questions"
42 questions

Первый print не работает из-за несоответствия типов. Второй работает нормально, хотя. По-видимому, . остается ассоциативным.

Ответ 5

set title sprintf("Polinômio de Taylor no ponto %f ",a)

или английский вариант

set title sprintf("Taylor Polynomial at the point %f ",a)

определит заголовок, преобразовывающий число a в предыдущую строку Я использую это в цикле, с полиномом Тейлора, рассчитанным ранее в точке a, где a, содержащий число, является управляющей переменной while.